Skip to content

Commit

Permalink
DOC: Blogpost_KD
Browse files Browse the repository at this point in the history
  • Loading branch information
deka27 committed Jul 9, 2024
1 parent 7a645f7 commit 723e172
Show file tree
Hide file tree
Showing 5 changed files with 249 additions and 0 deletions.
56 changes: 56 additions & 0 deletions posts/2024/2024_06_12_kaustav_week_2.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
My Journey Continues: Week 2 Progress with DIPY
===============================================

.. post:: June 10 2024
:author: Kaustav
:tags: google
:category: gsoc

Greetings, everyone!
It's time for another update on my Google Summer of Code (GSoC) journey with DIPY. The second week of the Coding phase has been equally productive and exciting, with significant advancements in both tasks.

Decorator Function Refinement
-----------------------------

Building upon the initial implementation from the previous week, I have invested significant efforts in refining and correcting the decorator function.
With the guidance of my mentor, `Serge Koudoro <https://github.com/skoudoro>`__, I have meticulously reviewed the code, identified areas for improvement, and made necessary changes to enhance its performance, readability, and maintainability.

Comprehensive Testing and Bug Fixing
------------------------------------

Alongside the refinement process, I have written comprehensive tests to ensure the decorator function's robustness and reliability.
These tests have been instrumental in identifying and resolving bugs, allowing me to thoroughly validate the decorator's functionality across various scenarios and cases.


Difficulties & Challenges
-------------------------

I didn't face any particular difficulty with my task this week, as it was pretty straightforward. I just had concerns about how the versioning would work out but I made proper test case scenarios for that as well.

Documentation Updates
---------------------

To ensure the long-term maintainability and usability of the decorator, I have updated the necessary documentation with Numpy standard.
This includes clear explanations of the decorator's functionality, guidelines for its usage, and examples to assist other contributors and users in leveraging its capabilities effectively.

Lazy Loading Research
---------------------

In addition to decorators, I looked and tested some implementations of lazy loading in some libraries.
1. Scipy
2. Numpy
3. Matplotlib

Next Week
---------

The plan next week is to implement decorator functions to all modules in DIPY and put up PRs. My main PR at the moment is https://github.com/dipy/dipy/pull/3239 .

Final Thoughts
--------------

The second week of the Coding phase has been dedicated to refining and correcting the decorator function, laying a solid foundation for its seamless integration into DIPY's codebase.

Stay tuned for more updates as I continue to work on enhancing DIPY!

Thank you for reading!
58 changes: 58 additions & 0 deletions posts/2024/2024_06_19_kaustav_week_3.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
My Journey Continues: Week 3 Progress with DIPY
===============================================

.. post:: June 17 2024
:author: Kaustav
:tags: google
:category: gsoc

Greetings, everyone!
The third week of the Coding phase has been a whirlwind of progress. I have achieved significant milestones in both the decorator implementation and lazy loading integration tasks, bringing us closer to enhancing DIPY's performance and efficiency.

Decorator Implementation across Modules
---------------------------------------

With refinements made in the previous week, I am thrilled to announce that I have successfully implemented the decorator function across 15 modules in DIPY.
This milestone represents a major step forward in enhancing the codebase's efficiency and maintainability.

Difficulties & Challenges
-------------------------

When I was trying to implement the decorator to multiple modules, I tried to do it through a script so that I could apply the decorator to all necessary functions at one shot.
The script functionality would first parse the selected file, then apply the decorator to the necessary functions and lastly unparse and reconstruct the file. I was using libraries which comply with PEP-8 and ruff formatting.
I faced two problems here:
1. After reconstruction, the comments that were put in the file will be removed. (This happened due to how the libraries worked)
2. The libraries were not able to unparse the Docstring correctly and would give errors.

After long time of trial and errors, I decided to work on applying decorators manually to all the modules.

Testing and Continuous Integration
----------------------------------

While the decorator implementation has been completed, there is still some testing remaining to ensure the robustness and reliability of the integrated code.
Additionally, I have submitted a pull request (PR) for the decorator implementation, and I am currently working on addressing any issues or concerns raised by the Continuous Integration (CI) pipeline.
Ensuring a smooth CI process is crucial for maintaining the quality and integrity of the codebase.

Lazy Loading Demonstration
--------------------------

Parallel to the decorator implementation, I have also made progress on the lazy loading integration task.
As a proof of concept, I have demonstrated a simple implementation of lazy loading in the align module of DIPY.
This initial implementation showcases the potential benefits of lazy loading, such as improved memory efficiency and performance optimization.
By delaying the initialization of objects until they are actually needed, lazy loading can significantly reduce the memory footprint of the application and enhance overall efficiency.

Next Week
---------

The plan next week is to work on the Lazy Loading, implement in DIPY and share a test branch with my mentor.
I will also look into fixing the existing PRs where I have implemented the decorator in sub-modules.

Final Thoughts
--------------

The third week of the Coding phase has been a significant milestone, with the decorator implementation across multiple modules and the demonstration of lazy loading capabilities.
I am grateful for the guidance and support provided by my mentor `Serge Koudoro <https://github.com/skoudoro>`__, and the DIPY community, which have been instrumental in driving this project forward.

Stay tuned for more updates as I continue to work on enhancing DIPY!

Thank you for reading!
45 changes: 45 additions & 0 deletions posts/2024/2024_06_30_kaustav_week_4.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
My Journey Continues: Week 4 Progress with DIPY
===============================================

.. post:: June 23 2024
:author: Kaustav
:tags: google
:category: gsoc

Hello everyone,
I hope this update finds you well. The fourth week of GSOC has made a little slow progress.

Decorator Implementation PR Fix
-------------------------------

A significant portion of this week was dedicated to addressing and resolving issues with the tests for our decorator implementations. My primary goal was to eliminate any warnings in the Continuous Integration (CI) pipeline, as these warnings are treated as errors and prevent the acceptance of our changes.
This process involved carefully reviewing each test, identifying the source of warnings, and making necessary adjustments to ensure our code passes all checks without raising any flags.

Difficulties & Challenges
-------------------------

No specific challenges faced this week.

Peer Review Contributions
--------------------------

In addition to working on our own implementations, I've had the opportunity to review Pull Requests (PRs) from my peer.
This has been an enriching experience, allowing me to gain insights into different coding approaches and problem-solving techniques.

PR: https://github.com/fury-gl/fury/pull/888

Blog Review
-----------

I also reviewed blogs of Peers.
1. https://github.com/fury-gl/fury/pull/896 - `Robin Roy <https://github.com/robinroy03>`__
2. https://github.com/fury-gl/fury/pull/897 - `Wachiou BOURAÏMA <https://github.com/WassCodeur>`__

Next Week
---------

Next week I am planning to submit my Lazy Loading PR.

Stay tuned for more updates as I continue to work on enhancing DIPY!

Thank you for reading!
40 changes: 40 additions & 0 deletions posts/2024/2024_07_01_kaustav_week_5.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
My Journey Continues: Week 5 Progress with DIPY
===============================================

.. post:: July 01 2024
:author: Kaustav
:tags: google
:category: gsoc

Hello everyone,
I hope this update finds you well. The fifth week of my Google Summer of Code (GSoC) journey with DIPY has been a bit different from the previous ones,
and I wanted to share an honest update about my progress and plans.

A Week of Unexpected Challenges
-------------------------------

This past week, I faced an unexpected setback as I fell ill. As a result, I wasn't able to make as much progress on the project as I had initially planned.
I'm grateful for the understanding and support from my mentor, `Serge Koudoro <https://github.com/skoudoro>`__, and my fellow GSOC team on the project.

Preparing for Lazy Loading Implementation
-----------------------------------------

Whatever time I could get, I used it to prepare for the upcoming task of implementing lazy loading in DIPY.
I've been reviewing the research I conducted earlier and planning my approach for integrating lazy loading into various modules.

Next Steps
----------

As I recover and regain my full productivity, I'm excited to dive into the lazy loading implementation. My goals include:

- Identifying key modules and functions that would benefit most from lazy loading.
- Developing a strategy for implementing lazy loading without disrupting existing functionality.
- Beginning the actual implementation process, by implementing for Sub-Modules of DIPY and sharing a build with my mentor for POC.
- Preparing comprehensive tests to ensure the lazy loading implementation works as expected and doesn't introduce any bugs.

Final Thoughts
--------------

While this week didn't see as much tangible progress as I would have liked, it has been an opportunity for reflection and preparation.
I'm grateful for the support of my mentor and excited to return to full speed at the earliest.
Thank you for your understanding and continued support. Stay tuned for what I hope will be a more code-filled update next week!
50 changes: 50 additions & 0 deletions posts/2024/2024_07_07_kaustav_week_6.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
My Journey Continues: Week 6 Progress with DIPY
===============================================

.. post:: July 07 2024
:author: Kaustav
:tags: google
:category: gsoc

Greetings, everyone!
The sixth week of GSOC has been a hectic one. A ton of time in correcting errors and fixing PRs.

Decorator PR Fixes
------------------

With decorator implementation PRs in place, and the integration of my original PR for keyword-only arguments (https://github.com/dipy/dipy/pull/3239), it was now time for the PRs which had the decorator implementation for specific modules to be integrated.

Lazy Loading PR
---------------

I have submitted a PR for the lazy loading feature using the `lazy_loader <https://pypi.org/project/lazy-loader/>`__ package. (https://github.com/dipy/dipy/pull/3288)

Difficulties & Challenges
-------------------------

I had and have a ton of challenges ahead as I am having trouble with some PR, I am specifically having a challenge in completing:

1. https://github.com/dipy/dipy/pull/3257
- This PR has issues related to the **wls_fit_tensor** function, after the application of the decorator I am receiving an error where it is telling me that 3 positional arguments are allowed but 4 are being passed, but when I check the main function parameters there are only 3 positional params. I am not able to figure out why 1 extra **argument** is being passed.

2. https://github.com/dipy/dipy/pull/3254
- This PR have a issue about the application of arguments separator, I am just awaiting response on applying the separator.

3. https://github.com/dipy/dipy/pull/3288
- This PR is my lazy loading PR. I am having trouble with the application of **type_stub** as the package is not able to recognize it and thus I am receiving error when trying to import the modules. I was trying to make it as close as possible to `scikit-image <https://github.com/scikit-image/scikit-image/tree/main>`__ implementation, it hasn't happened yet. But I'm hopeful.

Next Week
---------

Next week I am planning to push through the remaining PRs of decorator implementation. Also for **lazy_loader**, I am planning to fix the error.
I will have to go through the `PEP-561 <https://peps.python.org/pep-0561/>`__ documentation which talks about the **type_stub** implementation.

Final Thoughts
--------------

The sixth week of the Coding phase has been a challenging week, with the decorator implementation and lazy loading. Hopefully I can fix these soon and move on to next problems.
I am grateful for the guidance and support provided by my mentor `Serge Koudoro <https://github.com/skoudoro>`__, and the DIPY community, which have been instrumental in driving this project forward.

Stay tuned for more updates as I continue to work on enhancing DIPY!

Thank you for reading!

0 comments on commit 723e172

Please sign in to comment.