Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
github-actions[bot] committed Nov 7, 2024
1 parent e8f2691 commit 6acc10d
Show file tree
Hide file tree
Showing 502 changed files with 204,002 additions and 0 deletions.
1 change: 1 addition & 0 deletions dipy.org/pull/70/CNAME
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
dipy.org
Binary file added dipy.org/pull/70/_images/AWF_v1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added dipy.org/pull/70/_images/Code_ODF.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added dipy.org/pull/70/_images/DM-MNIST-112epoch.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added dipy.org/pull/70/_images/DSC03995.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added dipy.org/pull/70/_images/F0.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added dipy.org/pull/70/_images/F1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added dipy.org/pull/70/_images/F2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added dipy.org/pull/70/_images/F3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added dipy.org/pull/70/_images/F4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added dipy.org/pull/70/_images/F5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added dipy.org/pull/70/_images/Figure1_Midterm.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added dipy.org/pull/70/_images/Figure2_midterm.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added dipy.org/pull/70/_images/MK_comparison.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added dipy.org/pull/70/_images/ODF_final_code.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added dipy.org/pull/70/_images/Picture1.png
Binary file added dipy.org/pull/70/_images/Picture2.png
Binary file added dipy.org/pull/70/_images/Picture2A.png
Binary file added dipy.org/pull/70/_images/Picture3.png
Binary file added dipy.org/pull/70/_images/Picture4.png
Binary file added dipy.org/pull/70/_images/Picture5.png
Binary file added dipy.org/pull/70/_images/Picture6.png
Binary file added dipy.org/pull/70/_images/Picture7.png
Binary file added dipy.org/pull/70/_images/Picture8.png
Binary file added dipy.org/pull/70/_images/Step1.png
Binary file added dipy.org/pull/70/_images/Step2.png
Binary file added dipy.org/pull/70/_images/Vij_equation.png
Binary file added dipy.org/pull/70/_images/corpuscallosum_axial.png
Binary file added dipy.org/pull/70/_images/denoise_b0.png
Binary file added dipy.org/pull/70/_images/denoise_b0_piesno.png
Binary file added dipy.org/pull/70/_images/denoise_b2000.png
Binary file added dipy.org/pull/70/_images/dipy-logo-2.png
Binary file added dipy.org/pull/70/_images/dipy1.png
Binary file added dipy.org/pull/70/_images/dipy10.jpeg
Binary file added dipy.org/pull/70/_images/dipy11.jpeg
Binary file added dipy.org/pull/70/_images/dipy12.jpeg
Binary file added dipy.org/pull/70/_images/dipy13.png
Binary file added dipy.org/pull/70/_images/dipy14.jpg
Binary file added dipy.org/pull/70/_images/dipy2.png
Binary file added dipy.org/pull/70/_images/dipy3.jpeg
Binary file added dipy.org/pull/70/_images/dipy4.jpeg
Binary file added dipy.org/pull/70/_images/dipy5.jpeg
Binary file added dipy.org/pull/70/_images/dipy6.png
Binary file added dipy.org/pull/70/_images/dipy7.png
Binary file added dipy.org/pull/70/_images/dipy8.jpeg
Binary file added dipy.org/pull/70/_images/dipy9.jpeg
Binary file added dipy.org/pull/70/_images/dki_dirs_final_post.png
Binary file added dipy.org/pull/70/_images/dki_geometries.png
Binary file added dipy.org/pull/70/_images/dki_odfs_final_post.png
Binary file added dipy.org/pull/70/_images/dki_peaks.png
Binary file added dipy.org/pull/70/_images/dm3d-monai-B8-DM500.png
Binary file added dipy.org/pull/70/_images/docker_issue_fury.png
Binary file added dipy.org/pull/70/_images/eigenvalues.png
Binary file added dipy.org/pull/70/_images/fibercup_replicated.png
Binary file added dipy.org/pull/70/_images/formula_.png
Binary file added dipy.org/pull/70/_images/gODF_equa.png
Binary file added dipy.org/pull/70/_images/gsoc-logo.png
Binary file added dipy.org/pull/70/_images/piesno_DKI.png
Binary file added dipy.org/pull/70/_images/piesno_mask.png
Binary file added dipy.org/pull/70/_images/python-logo.png
Binary file added dipy.org/pull/70/_images/tensor_ellipsoids.png
Binary file added dipy.org/pull/70/_images/vq-vae-results.png
Binary file added dipy.org/pull/70/_images/vqvae-monai-B12-CC.png
Binary file added dipy.org/pull/70/_images/vqvae3d-monai-B10.png
Binary file added dipy.org/pull/70/_images/vqvae3d-monai-B5.png
Binary file added dipy.org/pull/70/_images/vqvae3d-reconst-f2.png
Binary file added dipy.org/pull/70/_images/vqvae3d-reconst-f3.png
3 changes: 3 additions & 0 deletions dipy.org/pull/70/_sources/blog.rst.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
====
Blog
====
19 changes: 19 additions & 0 deletions dipy.org/pull/70/_sources/calendar.rst.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
.. _calendar:

========
Calendar
========

You can stay updated with upcoming DIPY_ events. Checkout our events calendar.

.. raw:: html

<iframe class="calendar" src="https://calendar.google.com/calendar/embed?src=uv8c50fkfvs529837k298ueqh0%40group.calendar.google.com&ctz=America%2FIndiana%2FIndianapolis" title="DIPY Calendar"></iframe>


Get Calendar
--------------
You can also add DIPY_ calendar to your google calendar with this `link. <https://calendar.google.com/calendar/u/0?cid=dXY4YzUwZmtmdnM1Mjk4MzdrMjk4dWVxaDBAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ>`_

.. include:: links_names.inc

6 changes: 6 additions & 0 deletions dipy.org/pull/70/_sources/index.rst.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
.. toctree::
:maxdepth: 2
:hidden:

blog
calendar
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
Google Summer of Code 2015 Announcement
=======================================

.. post:: January 15 2015
:author: Eleftherios Garyfallidis
:tags: google
:category: gsoc announcement

We are happy to announce our application for the Google Summer of Code 2015.

If you are interested in participating as a student, please read `this <https://wiki.python.org/moin/SummerOfCode/Expectations>`_ first.

GSoC is a project that enables students to learn by contributing to an open-source project, while receiving a stipend from Google, and mentorship from open-source software developers. For details about this year's GSoC, please refer to `this page <http://www.google-melange.com/gsoc/homepage/google/gsoc2015>`_.

All participants should have a basic knowledge of scientific programming in Python.
Recommended book `Python for Data Analysis by Wes McKinney <http://shop.oreilly.com/product/0636920023784.do>`_.

Here are the projects we offer to mentor this summer:

1. **3D visualizations**

Description: The main tool for 3D visualization in dipy is the dipy.viz.fvtk module.
This creates `beautiful images <https://www.youtube.com/watch?v=kstL7KKqu94>`_, but the functionality is currently limited, and we would like to expand it. This project will create a more generic API that allows visualization of peaks, ODFs, volumes and streamlines in the correct space. Also implement VTK's network visualization in fvtk. Get creative! Many other things can be done here! For example enabling recording of 3D animations of the brain, create glass effects etc.

Difficulty: high.

Skills required: acquaintance with VTK is an advantage, knowledge of 3D graphics is required.

Mentors: `Eleftherios Garyfallidis <mailto:[email protected]>`_ and `Ariel Rokem <mailto:[email protected]>`_ and `Matthew Brett <mailto:[email protected]>`_.

2. **Use directional information to improve dMRI registration**

Description: Currently in DIPY we have a framework for nonlinear registration based on the idea of Symmetric Normalization `SyN <http://www.ncbi.nlm.nih.gov/pubmed/17659998>`_. This framework allows to create new similarity metrics (e.g. cross correlation, or mutual information) and let the optimization of SyN to warp the images. Now, in diffusion MRI we can have in each voxel orientation distributions. The goal of the project is to use additionally this orientation information to drive the registration. So now we do not only warp but also re-orient the orientation distributions while warping. In other words, you will have to create a new orientation distribution based metric which will work inside our existing SyN framework. `This paper <http://www.ncbi.nlm.nih.gov/pubmed/21316463>`_ is a must read.

Difficulty: high

Skills required: expertise in registration; acquaintance with diffusion modelling.

Mentors: `Matthew Brett <mailto:[email protected]>`_ and `Eleftherios Garyfallidis <mailto:[email protected]>`_ and `Matthew Brett <mailto:[email protected]>`_.

3. **Diffusion Kurtosis Imaging**

Description: `Diffusion Kurtosis Imaging <http://www.ncbi.nlm.nih.gov/pubmed/20632416>`_, or DKI, is a method that estimates the parameters of higher-order statistics in DWI data with multiple b-value measurements (such as measurements from the `Human Connectome Project <http://www.humanconnectome.org/>`_. This allows us to make inferences about properties of the tissue that are not readily available with other methods, such as DTI. We have already `begun <https://github.com/nipy/dipy/pull/233>`_ the work on an implementation of this algorithm, but the work needs to be completed, and there is still much to do here.

Difficulty: high.

Skills required: acquaintance with diffusion MRI.

Mentors: `Ariel Rokem <mailto:[email protected]>`_ and `Eleftherios Garyfallidis <mailto:[email protected]>`_ and `Matthew Brett <mailto:[email protected]>`_.

4. **Offline quality assurance (QA) using a publicly available dataset**

Description: The ultimate demonstration of a tool is in its use in realistic and important cases. The analysis of high-quality publicly available data-sets (e.g. from the `Human Connectome Project <http://www.humanconnectome.org/>`_) is one compelling case. The goal of this project, is to create a pipeline for analysis of such a data-set, and to reproducibly execute this analysis as a way to benchmark the tools available through dipy, and perform QA, to detect regressions in the performance of these tools. This will also be a public show-case of the project, as a way to interest new users.

Difficulty: intermediate.

Skills required: acquaintance with diffusion MRI, and with dipy.

Mentors: `Ariel Rokem <mailto:[email protected]>`_ and `Eleftherios Garyfallidis <mailto:[email protected]>`_ and `Matthew Brett <mailto:[email protected]>`_.

5. **Tissue classifiers for tracking**

Description: Research in the last couple of years has shown that using a tissue classifier in tracking can be of great benefit for creating more accurate representations of the underlying white matter anatomy. The goal of this project will be to create accurate tissue classifiers to guide tracking. So this is basically an image segmentation task. To do that, we will have to implement a couple of popular algorithms using T1-weighted and/or invent a new one using DWI data. Sounds fun?

Difficulty: intermediate.

Skills required: acquaintance with diffusion MRI and image segmentation.

Mentors: `Eleftherios Garyfallidis <mailto:[email protected]>`_ and `Ariel Rokem <mailto:[email protected]>`_ and `Matthew Brett <mailto:[email protected]>`_
56 changes: 56 additions & 0 deletions dipy.org/pull/70/_sources/posts/2015/2015_05_17_Rafael.rst.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
First post after acceptance! =)
===============================

.. post:: May 17 2015
:author: Rafael Henriques
:tags: google
:category: gsoc

Personal Note
-------------

Hi all,

I am please to inform that my project proposal was accepted to the Google Summer of Code!

Congrats to everyone that was also accepted!!! This definitely will be an exciting summer!

As I mentioned on my last post, I will be implementing some exiting MRI techniques which allows us to see brain connectivity in vivo - how awesome is that?

The following weeks I will give you more details about this. Keep tuned and you could explore the brain with me!

Greetings from Cambridge (UK),

`Rafael N.H. <https://github.com/RafaelNH>`__
PhD Student at the University of Cambridge


Before the Student Coding Period
--------------------------------

I am currently working on some simulations that will be useful for testing the imaging techniques that I will be implementing.

I start this work before applying to the GSoC (https://github.com/nipy/dipy/pull/582), and in the last weeks I have been improving it. At the moment, simulations are almost complete - codes are running without errors and they are written in PEP8 standards. Now I only have to add some automatic debugging scripts using Nose python testing.

During the following week, I will discuss the work done so far with my mentors (in particular I want to discuss some minor changes on the current scripts) and fix problems that I am facing in creating the automatic debugging scripts.

Minor details to discuss with mentors:

1) Suggestion on changes on the default values of the simulations modules

2) Discuss if is better to remove some unnecessary inputs or have redundant computing steps.

3) Discuss the definition of some important variables that will be used in future steps.

Problems to fix during this week:

1) Resolve problems in recognizing paths where the new version of modules are locally located.

2) Fix error when trying to run Nose:

.. code-block:: zsh
:linenos:
Cannot run $ nosetests test_voxel.py
ERROR: Failure: ImportError (No module named runspeed)
60 changes: 60 additions & 0 deletions dipy.org/pull/70/_sources/posts/2015/2015_05_24_Rafael.rst.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
Time to start mapping brain connections and looking to brain properties in vivo
===============================================================================

.. post:: May 24 2015
:author: Rafael Henriques
:tags: google
:category: gsoc

Hi all,

Tomorrow we are starting the coding period :), so it is time for some details about my project and tell you what was done in the community bonding period.

1) How can we study brain connections and brain's tissue properties in vivo? - A simple introduction for non experts

Trajectory of neuronal connections (tractography) and quantification of tissue properties in the living human brain can be obtain from measures of water diffusion using MRI scans. To give you an example how this is done, I will first start by describing one of the simplest technique - the diffusion tensor imaging (DTI).

By combining the information of several diffusion weighted images, DTI models the water diffusion for each image element using a tensor which can be represented by an ellipsoid (see Figure below).

.. figure:: /_static/images/gsoc/2015/rafael/tensor_ellipsoids.png
:alt: tensor_ellipsoids
:width: 400px
:align: center

Figure 1. Diffusion tensors computed from all voxels of a real brain image. This image was produced using Dipy as described in Dipy's website.

From figure 1 we can see that diffusion is larger is some directions. In fact the direction of larger diffusion can be related to the direction of brain's white matter fibers. The axon myelin sheaths restricts the water diffusion and thus diffusion is smaller on the directions perpendicular to fibers. On the other hand, the diffusion parallel to fibers is less restricted and therefore matching the direction of fibers.

Based on this, 3D virtual reconstruction of brain connection can be obtain using specific tracking algorithms - a procedure which is named fiber tracking. An example of this 3D maps obtain from a real brain dataset is shown below.

.. figure:: /_static/images/gsoc/2015/rafael/corpuscallosum_axial.png
:alt: corpuscallosum_axial
:width: 400px
:align: center

Figure 2. Example of corpus callosum fibers. These fibers connect the left and right fiber hemispheres. This image was produced using Dipy as described in Dipy's website.

Nowadays, DTI is still one of the diffusion weighted techniques most used in both clinical applications and in many research studies, however it is not always accurate. DTI cannot account properly for the crossing of different populations of white-matter fiber connections. Moreover, it ignores the non-Gaussian properties of diffusion in biological tissues which can be used to derive interesting and important measures of tissue properties.


1) Project proposal

In this project, I will be implementing an alternative the diffusion-weighted technique named the diffusion kurtosis imaging (DKI) in an open source software project, the Diffusion Imaging in Python (Dipy). DKI overcomes the two major limitations of DTI:
It quantifies the non-Gaussian properties of water diffusion in biological tissues by modelling the kurtosis tensor (KT) which can be used to derive important tissue measures as the density of axonal fibers.
Relative to the diffusion tensor, KT is also shown to offer a better characterization of the spatial arrangement of tissue microstructure and can be used as a basis for more robust tractography. Particularly, DKI based tractography is sensitive to resolve crossing fibers.

3) What is done so far

As an update of what I posted previously (see Post #2), I finished the work on DKI's simulations - procedures that will be useful for testing the codes that I will be implementing during this summer. In particular, as my mentor suggested, I added some automatic debugging scripts using Nose python testing. These scripts are now insuring that the kurtosis tensor is symmetry (as expected) and that simulations are able to currently produce the diffusion tensor and kurtosis tensor in both cases of well aligned and crossing fibers.

Many thanks to my mentor for teaching me how to work with nose python testing. In particular, the useful tip running the nose tests and knowing which lines the testing scripts are covering by using the following command:

.. code-block:: zsh
:linenos:
nosetests -v dipy/sims/tests/test_voxel.py --with-coverage --cover-package=dipy
4) Next steps

After merging the DKI simulations to Dipy's master brunch, I will start working on the DKI reconstruction modules, based on some preliminary preparation work previously submitted by other dipy contributors. At the end of the week, I intend to finish the first part of the DKI reconstruction modules - the KT estimation from diffusion-weighted signals. For this I will implement the standard ordinary linear least-squares (OLS) solution of DKI.
98 changes: 98 additions & 0 deletions dipy.org/pull/70/_sources/posts/2015/2015_06_05_Rafael.rst.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
First report (1st week of coding, challenges and ISMRM conference)
==================================================================

.. post:: June 05 2015
:author: Rafael Henriques
:tags: google
:category: gsoc

The coding period started in a challenging way.

As I mentioned on my previous post, I started the coding period by merging the work done during the community bonding period to the main Dipy master repositories. This was not as trivial as expected since some latest updates on the Dipy master repositories was causing conflicts with my codes.

Rebasing
--------

To solve this conflicts, I used git rebase (I want to thank my mentor Dr Ariel Rokem for his useful tips on how to do this). For more details on rebasing you can find a nice tutorial here. To summarize, below you can find the essential steps to rebase a branch:

1) make sure that the master branch of your computer have the latest changes, for this:

.. code-block:: zsh
:linenos:
git checkout master
git pull upstream master
2) start rebasing by moving the work done on your branch to the updated version of the master:

.. code-block:: zsh
:linenos:
git checkout your_branch
git rebase master
3) If there is a conflict, automatic rebasing stops so you can manually update the files. The parts of the script with conflict will be pointed as the lines between markers >>>> and ====.

4) After manually resolving a conflict, you can add the corrected files and continue rebasing using:

.. code-block:: zsh
:linenos:
git add file
git rebase --continue
5) When rebasing is accomplished, you can update the changes to your fork by typing:

.. code-block:: zsh
:linenos:
git push -f origin your_branch
After rebasing Problem #1
^^^^^^^^^^^^^^^^^^^^^^^^^

After rebasing, I noticed some problem on Dipy's master compilation. Fortunately, with the help of all the amazing Dipy team, this problem was quickly addressed (for more information see here).

After rebasing Problem #2 - the right order to reconstruct the diffusion tensor
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

This is a good example why testing modules are so important.

After solving problem #1, one of my testing modules was failing since the simulated diffusion tensors were given unexpected results (to know what is a diffusion tensor read my previous post).

Basically on my simulations, the diffusion tensors are reconstructed from eigenvalues and eigenvectors decomposition. After some hours of debugging, I realized the cause of the logic error. The eigenvalues given by an updated master's function was transpose relatively to its previous version. So, for the ones also working with second order tensors, make sure that when reconstructing the tensor from its eigenvalues and eigenvectors decomposition you use the matrix multiplication in the following order:

.. code-block:: zsh
:linenos:
import numpy as np
from numpy import dot
::

Tensor = dot(dot(R.T, np.diag(mevals)), R)

where
::

R = [eigenvector1, eigenvector2, eigenvector3]

and
::

mevals = [eigenvalue1, eigenvalue2, eigenvalue3]

ISMRM Conference
----------------

As I mentioned on my proposal, this week I also attended the 23rd annual meeting of the International Society of Magnetic Resonance in Medicine (ISMRM). The conference was very productive. In particular, I had some nice discussions with the top experts on diffusion kurtosis imaging (DKI) and their feedback will be taken into account so that my work during the summer of code is done according to the most recent state of art of the field.

It was also great to personally meet the Dipy developers and promoting the open source software. I had very nice feedback from different research groups and there were many new researchers interested in using Dipy and/or willing to collaborated with its development. Soon I will post some photos of the conference =).

Next steps
----------

My mentor suggested a small change on the example codes for the DKI simulation usage. I am currently finalizing this, so soon I will be posting the final version of the DKI simulations.

In the following days, I will also create a pull request with the work started on DKI reconstructions modules. As mentioned on my proposal, the implementation of these modules are the objective for my midterm evaluation.
Loading

0 comments on commit 6acc10d

Please sign in to comment.