Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 04:16
    skoudoro closed #1976
  • 04:16
    skoudoro commented #1976
  • 04:15

    skoudoro on master

    Add a warning on attempted impo… PEP8 Adds a (currently failing) test. and 3 more (compare)

  • 04:15
    skoudoro closed #1977
  • 04:15
    skoudoro commented #1977
  • Oct 16 21:08
    codecov[bot] commented #1977
  • Oct 16 21:08
    codecov[bot] commented #1977
  • Oct 16 21:08
    codecov[bot] commented #1977
  • Oct 16 21:08
    codecov[bot] commented #1977
  • Oct 16 18:30
    jhlegarreta commented #1975
  • Oct 16 18:19
    skoudoro commented #1975
  • Oct 16 17:52
    codecov[bot] commented #1977
  • Oct 16 17:52
    pep8speaks commented #1977
  • Oct 16 17:52
    codecov[bot] commented #1977
  • Oct 16 17:52
    arokem synchronize #1977
  • Oct 16 15:39
    skoudoro edited #1919
  • Oct 16 15:30
    codecov[bot] commented #1975
  • Oct 16 15:29
    codecov[bot] commented #1975
  • Oct 16 15:29
    skoudoro synchronize #1975
  • Oct 16 14:42
    skoudoro edited #1975
albayenes
@albayenes
@nis02002 You can find information to calculate diffusion tensor in this tutorial https://dipy.org/documentation/1.0.0./examples_built/reconst_dti/#example-reconst-dti
There is also a function which is named as apparent_diffusion_coef(q_form, sphere) to calculate ADC in DT model
Tristan MOREAU
@Tristan2Tzara_twitter
Thank you for this great new version of dipy ! Good job :-) I have a basic question on how can we use fury to plot the spherical deconvolution results. I used the Tractoflow pipeline to preprocess my clinical data set. Using scil_compute_fodf.py with spherical harmorics basis set to 'descoteaux07' and order set to 8. I got a file 'fodf.nii.gz' of shape (133, 161, 144, 45). My question is how can I use fury to plot the fodf on coronal plan using the fodf file ? Best regards, sincerely. Tristan :-)
Ariel Rokem
@arokem
@Tristan2Tzara_twitter : check out the odf_slicer in this example: https://dipy.org/documentation/1.0.0./examples_built/reconst_csd/
Davis Bennett
@d-v-b
Can anyone point to literature / examples of dealing with masked data in a multiresolution framework?
(for registration)
the right approach seems to be to mask the data before generating the scale space, but i'm not sure
Eleftherios Garyfallidis
@Garyfallidis
Makes sense @d-v-b first mask the brain then multires. With nonlinear registration you really have to do that. There should be something about that at Arno Klein's registration comparison paper.
Davis Bennett
@d-v-b
cool, thanks
i'm looking at this in the context of nipy/dipy#1969
Davis Bennett
@d-v-b
this might be out of scope w.r.t. masking for image registration, but I notice that a lot of these registration functions / methods take 4 arguments at a minimum -- moving, fixed, moving_grid2world, fixed_grid2world -- and there are a lot of nearly duplicated code blocks which perform some operation on moving, then the same operation on fixed. Is there any appetite to simplifying this with some lightweight OOP? e.g. an object that has a data property, a mask property, and a grid2world property would save a lot of LOC in the registration codebase
this is looking pretty hairy to me:
image.png
Eleftherios Garyfallidis
@Garyfallidis
Yes @skoudoro has a plan to make this more OOP. Let's sync together.
Eleftherios Garyfallidis
@Garyfallidis
I would say more than oop the plan is to simplify some things in the reg API. Not sure yet we can take out these parameters completely at first stage. You may feel this is hairy now but after a while you see that it is quite useful. Also do look into dipy.workflows.align there we have a higher level api. Do you have a suggestion for how to reduce the number of parameters? Be happy to suggest ideas. We are good listeners :)
willi3by
@willi3by
Is there a working implementation of the single shell free water bi tensor model? I found a couple of scripts that are works in progress and have spent two days trying to correct errors so it would be nice to know if there is a working implementation
Davis Bennett
@d-v-b
@Garyfallidis I agree, those parameters are all essential, and it's good if the entry point to registration takes raw numpy arrays. I was thinking more about introducing some data structures (maybe something as simple as a namedtuple that would be used internally by the registration / optimization routines
but I don't have any clear ideas right now
Davis Bennett
@d-v-b
@Garyfallidis i have a question about the scale space code -- it looks like it does not do any downsampling, is this by design?
downsampling images after blurring should greatly reduce memory load + compute time for large images
(for reference, the images I am working with are ~10000 x 10000 pixels, and i have thousands of these images, so performance improvements matter a lot here)
Eleftherios Garyfallidis
@Garyfallidis
I think it does downsampling. This is the factor parameter. Factor of 2 means divides by 2.
Davis Bennett
@d-v-b
yes I found where the downsampling happens -- the scale space does not itself do any downsampling, but the AffineRegistration class uses the scalespace parameters to do the downsampling in the optimization step
Ariel Rokem
@arokem
@willi3by : there is a single-shell free water DTI WIP PR by @mvgolub here: nipy/dipy#1744
willi3by
@willi3by
@arokem @mvgolub thank you for the response. This is actually the file I have been trying to edit but have had trouble editing and troubleshooting. I have made some progress but do not have the expertise to do it efficiently. It looks like the last update was about 4 months ago. Is this still a work in progress?
Ariel Rokem
@arokem
I think so. Maybe @mvgolub or @RafaelNH can say more?
Yaroslav Halchenko
@yarikoptic
AHA -- here is where all the DiPy folks hanging out! Will there be DiPy booth at SfN?
Ariel Rokem
@arokem
@yarikoptic : hello!
Nope. No SfN booth
smasjoodi
@smasjoodi
Hi every body. I analysed a DWI data set using DKI model (just as example code), but outputs are very noisy. DWI data parameters: b-values:0, 500, 1000, 2000 in the same 15 directions. Why AK and RK are so much noisy?
Kurtosis_tensor_standard_measures.png
Ariel Rokem
@arokem
QuantumBrain®
@Quantum_Neuron_twitter
Hey, just a general question out of curiosity: What's causing the actual b-values to differ slightly from what I selected in the scanner console? e.g. b0 is actually not zero but around 26. or b=1000 is sometimes 999.34 or 1001.18 etc. Is this measured or calculated somehow from the gradient system? and does it improve the results significantly to use those actual values instead of the theoretical ones?
Ariel Rokem
@arokem
@Quantum_Neuron_twitter : I don't know the answer to this, but if no one here can provide an answer, I think that it would be a great question to ask on https://neurostars.org/
I do know that in some cases b-values also vary spatially
(empirical b-values, that is)
willi3by
@willi3by
@arokem @RafaelNH @mvgolub I was investigating and it seems the post that was linked in a previous response to nipy/dipy#1744 has not been updated since May 7. Is there a dipy work in progress repository where newer files might be stored? Thanks again for the help
Rafael Neto Henriques
@RafaelNH
Hi @willi3by! @mvgolub did sime very nice progress on this code. We didn't push any update because we are testing it offline in deep. At the moment, we already have the same performance when comparing to the state of art of single shell algorithms in the recent literature, however we are still not happy with what single shell algorithms can give us. We are still detecting massive issues with this technique in general, and we are trying the best to overcome its major limitations. By the end of the year, we are planing: 1) to have our advances pushed in dipy; 2) share a manuscript reporting the details of our implementations and tests. Keep posted!
Rafael Neto Henriques
@RafaelNH
Hi @smasjoodi! Actually, considering that you have only 15 directions per shell, your maps looks good. DKI provides you a nice quantification of non-Gaussian diffusion (information that you cannot capture using techniques such as DTI), however its limitation is that is noisy, particularly in perpendicular directions where diffusivities are low (e.g. see chapter 3 of https://core.ac.uk/download/pdf/12428129.pdf). Radial and axial kurtosis can also have a noisier aspect because these estimates are not well define in crossing white matter regions and grey matter, such and axial and radial diffusivity (https://www.sciencedirect.com/science/article/pii/S1053811915000968?via%3Dihub). To improve DKI performance try to Denoise your data, and also Gibbs unring (e.g. see chapter 3 of https://www.repository.cam.ac.uk/handle/1810/281993) - code available in dipy (https://dipy.org/documentation/1.0.0./examples_built/denoise_mppca/#example-denoise-mppca) (https://dipy.org/documentation/1.0.0./examples_built/denoise_gibbs/#example-denoise-gibbs). Also the mean signal DKI might provide you an alternative and more precise non-gaussian diffusion characterisation (https://dipy.org/documentation/1.0.0./examples_built/reconst_msdki/#example-reconst-msdki).
willi3by
@willi3by
@RafaelNH Thank you for the in depth update! I very much look forward to seeing this in Dipy.
Rafael Neto Henriques
@RafaelNH
Hi @Quantum_Neuron_twitter! Actual values consider other sequence parameters that induces extra diffusion weighting (e.g effects of crushers). Using that actual values provides you more accurate diffusion estimates.
nis02002
@nis02002
Hi everyone, when I try to visualize data with window import form viz module, it has error message "import error, can not import name ' window', how to solve this issue?
nis02002
@nis02002
I installed pury, the window import error is gone, but there are error to display with VTK, can not find a decent config
Nabila Abraham
@nabsabraham
hi everyone! I'm using 3D data for the first time ever and patient's slice dimensions don't always match up - is a simple affine registration sufficient to reproject all patients to a common shape? for example, I want all patients to have a shape of 15x128x128
any help appreciated!
AlexBadea
@portokalh
Depends what you want to do. An affine transform may change the scale of your patient's brain. If you want to simply match the image matrices consider ResampleImage in ants; or convert3d and you may also want to check https://github.com › rordenlab › spmScripts › blob › nii_reslice_target. It is so good to have options! Best of luck!
@RafaelNH can you point me to examples of massive issues in single shell methods, or maybe not at this time? Just curious. Thanks and the best of luck!
AlexBadea
@portokalh

@nabsabraham ; nice thing is you can do this in dipy !!! https://dipy.org/documentation/1.0.0./examples_built/affine_registration_3d/#example-affine-registration-3d excerpt: We can see that the images are far from aligned by drawing one on top of the other. The images don’t even have the same number of voxels, so in order to draw one on top of the other we need to resample the moving image on a grid of the same dimensions as the static image, we can do this by “transforming” the moving image using an identity transform

identity = np.eye(4)
affine_map = AffineMap(identity,
static.shape, static_grid2world,
moving.shape, moving_grid2world)
resampled = affine_map.transform(moving)

smasjoodi
@smasjoodi
Hi @RafaelNH . Thank you very much for your perfect explanation.
smasjoodi
@smasjoodi
How could I update my dipy version? Currently I cannot run mppca program to denoise my DKI dataset.
Every time I want to install dipy on my Anaconda it dipy0.16 is installed.