Dear all, I am working on some generative model for tractography (either GAN or VAE).Originally I thought to encode from each voxel the tensor, then I have been readingthe Yixue Fenga and Bramsh Q. Chandio paper with VAE generting synthetic tractography. e.g. https://www.biorxiv.org/content/10.1101/2023.02.24.529954v3.full.pdf I also tried to decompose the FINTA, GESTA... though their library has become quite complex to study. What is still unclear to me. Is what kind of data you pass in the first layer (not what you have in the latent space). Independently whether it is a tract or a bundle, it seems you pass entire streamline (I assume as a series of x,y,z points) not individual tensors from individual voxels. Am I right? Can someone clarify this aspect? Thanks Best,Alex
Dear Alex,
it seems you pass entire streamline (I assume as a series of x,y,z points) not individual tensors from individual voxels. Am I right?
Your assumption is right: the data you provide to the (V)AE is the streamline coordinates. Happy to discuss and to help. Cheers, JON HAITZ On Fri, Dec 22, 2023 at 2:57 PM Alex Crimi via DIPY <dipy@python.org> wrote:
Dear all,
I am working on some generative model for tractography (either GAN or VAE). Originally I thought to encode from each voxel the tensor, then I have been reading the Yixue Fenga and Bramsh Q. Chandio paper with VAE generting synthetic tractography. e.g. https://www.biorxiv.org/content/10.1101/2023.02.24.529954v3.full.pdf
I also tried to decompose the FINTA, GESTA... though their library has become quite complex to study.
What is still unclear to me. Is what kind of data you pass in the first layer (not what you have in the latent space). Independently whether it is a tract or a bundle, it seems you pass entire streamline (I assume as a series of x,y,z points) not individual tensors from individual voxels. Am I right?
Can someone clarify this aspect? Thanks
Best, Alex
_______________________________________________ DIPY mailing list -- dipy@python.org To unsubscribe send an email to dipy-leave@python.org https://mail.python.org/mailman3/lists/dipy.python.org/ Member address: jon.haitz.legarreta@gmail.com
Hi Dr. Crimi, Thank you for your question. CC'ing Wendy here, who can help with it. Best, Bramsh On Fri, Dec 22, 2023 at 11:56 AM Alex Crimi via DIPY <dipy@python.org> wrote:
Dear all,
I am working on some generative model for tractography (either GAN or VAE). Originally I thought to encode from each voxel the tensor, then I have been reading the Yixue Fenga and Bramsh Q. Chandio paper with VAE generting synthetic tractography. e.g. https://www.biorxiv.org/content/10.1101/2023.02.24.529954v3.full.pdf
I also tried to decompose the FINTA, GESTA... though their library has become quite complex to study.
What is still unclear to me. Is what kind of data you pass in the first layer (not what you have in the latent space). Independently whether it is a tract or a bundle, it seems you pass entire streamline (I assume as a series of x,y,z points) not individual tensors from individual voxels. Am I right?
Can someone clarify this aspect? Thanks
Best, Alex
_______________________________________________ DIPY mailing list -- dipy@python.org To unsubscribe send an email to dipy-leave@python.org https://mail.python.org/mailman3/lists/dipy.python.org/ Member address: bramshq@gmail.com
Hi Dr Crimi, Thank you for your question! In our paper, we pass entire streamlines into the network where one streamline is one sample, and the streamlines are resampled to an equal number of points to use 1D convolutional layers. The channels are x, y and z coordinates. Depending on the application, whole bundles can also be used, such as this paper by Chen et al ( http://arxiv.org/abs/2207.02402) where they use point cloud representations. Happy to connect offline if you need more information! Best, Wendy On Fri, Dec 22, 2023 at 12:59 PM Bramsh Chandio <bramshq@gmail.com> wrote:
Hi Dr. Crimi,
Thank you for your question. CC'ing Wendy here, who can help with it.
Best, Bramsh
On Fri, Dec 22, 2023 at 11:56 AM Alex Crimi via DIPY <dipy@python.org> wrote:
Dear all,
I am working on some generative model for tractography (either GAN or VAE). Originally I thought to encode from each voxel the tensor, then I have been reading the Yixue Fenga and Bramsh Q. Chandio paper with VAE generting synthetic tractography. e.g. https://www.biorxiv.org/content/10.1101/2023.02.24.529954v3.full.pdf <https://urldefense.com/v3/__https://www.biorxiv.org/content/10.1101/2023.02....>
I also tried to decompose the FINTA, GESTA... though their library has become quite complex to study.
What is still unclear to me. Is what kind of data you pass in the first layer (not what you have in the latent space). Independently whether it is a tract or a bundle, it seems you pass entire streamline (I assume as a series of x,y,z points) not individual tensors from individual voxels. Am I right?
Can someone clarify this aspect? Thanks
Best, Alex
_______________________________________________ DIPY mailing list -- dipy@python.org To unsubscribe send an email to dipy-leave@python.org https://mail.python.org/mailman3/lists/dipy.python.org/ <https://urldefense.com/v3/__https://mail.python.org/mailman3/lists/dipy.pyth...> Member address: bramshq@gmail.com
Dear Wendy and Jon, thank youd for your reply.I have now found the fibernet github https://github.com/wendyfyx/FiberNet-ConvVAE/blob/main/notebooks/ConvVAE-inf... is a lot simpler than the FIESTA to explore (sometimes things made so easy are good). In principle both FIESTA and this tool work very similarly. You usa trk loader, resample the fibers (as xyz sequences or the streamlines) and feed them to a 3-layer Encoder + 3-layer Decoder.The latent space can be used to detect anomalies and so on. Just last confirmation, since you also use those things for generative purposes, once could for instance train a model with healthy subjects and then feed the AE a disease bundle (e.g. Alzheimer or Parkinson) to get as a result how the individual correct bundles should look like, right?Rather than detecting anomalies, more a bundle cleaner I am not aiming at something like that but more a translation of streamlines obtained at different resolution or quality. Best,Alex On Friday, December 22, 2023 at 10:40:58 PM GMT+1, Wendy Feng <yixuefen@usc.edu> wrote: Hi Dr Crimi, Thank you for your question! In our paper, we pass entire streamlines into the network where one streamline is one sample, and the streamlines are resampled to an equal number of points to use 1D convolutional layers. The channels are x, y and z coordinates. Depending on the application, whole bundles can also be used, such as this paper by Chen et al (http://arxiv.org/abs/2207.02402) where they use point cloud representations. Happy to connect offline if you need more information! Best,Wendy On Fri, Dec 22, 2023 at 12:59 PM Bramsh Chandio <bramshq@gmail.com> wrote: Hi Dr. Crimi, Thank you for your question. CC'ing Wendy here, who can help with it. Best,Bramsh On Fri, Dec 22, 2023 at 11:56 AM Alex Crimi via DIPY <dipy@python.org> wrote: Dear all, I am working on some generative model for tractography (either GAN or VAE).Originally I thought to encode from each voxel the tensor, then I have been readingthe Yixue Fenga and Bramsh Q. Chandio paper with VAE generting synthetic tractography. e.g. https://www.biorxiv.org/content/10.1101/2023.02.24.529954v3.full.pdf I also tried to decompose the FINTA, GESTA... though their library has become quite complex to study. What is still unclear to me. Is what kind of data you pass in the first layer (not what you have in the latent space). Independently whether it is a tract or a bundle, it seems you pass entire streamline (I assume as a series of x,y,z points) not individual tensors from individual voxels. Am I right? Can someone clarify this aspect? Thanks Best,Alex _______________________________________________ DIPY mailing list -- dipy@python.org To unsubscribe send an email to dipy-leave@python.org https://mail.python.org/mailman3/lists/dipy.python.org/ Member address: bramshq@gmail.com _______________________________________________ DIPY mailing list -- dipy@python.org To unsubscribe send an email to dipy-leave@python.org https://mail.python.org/mailman3/lists/dipy.python.org/ Member address: alex.crimi@yahoo.com
Hi Alex,
to get as a result how the individual correct bundles should look like, right?
Not sure what you mean by "correct" in this context. If you mean that you would like to know how streamlines for a given unhealthy participant _could_ look like were this participant healthy, you could use an approach proposed in Trading Streamlines in Tractography using Autoencoders (TINTA) (ISMRM 2023). Happy to help. Cheers, JON HAITZ On Sat, Dec 23, 2023 at 11:49 PM Alex Crimi <alex.crimi@yahoo.com> wrote:
Dear Wendy and Jon,
thank youd for your reply. I have now found the fibernet github https://github.com/wendyfyx/FiberNet-ConvVAE/blob/main/notebooks/ConvVAE-inf... which is a lot simpler than the FIESTA to explore (sometimes things made so easy are good). In principle both FIESTA and this tool work very similarly. You usa trk loader, resample the fibers (as xyz sequences or the streamlines) and feed them to a 3-layer Encoder + 3-layer Decoder. The latent space can be used to detect anomalies and so on.
Just last confirmation, since you also use those things for generative purposes, once could for instance train a model with healthy subjects and then feed the AE a disease bundle (e.g. Alzheimer or Parkinson) to get as a result how the individual correct bundles should look like, right? Rather than detecting anomalies, more a bundle cleaner
I am not aiming at something like that but more a translation of streamlines obtained at different resolution or quality.
Best, Alex
On Friday, December 22, 2023 at 10:40:58 PM GMT+1, Wendy Feng <yixuefen@usc.edu> wrote:
Hi Dr Crimi,
Thank you for your question! In our paper, we pass entire streamlines into the network where one streamline is one sample, and the streamlines are resampled to an equal number of points to use 1D convolutional layers. The channels are x, y and z coordinates. Depending on the application, whole bundles can also be used, such as this paper by Chen et al (http://arxiv.org/abs/2207.02402) where they use point cloud representations.
Happy to connect offline if you need more information!
Best, Wendy
On Fri, Dec 22, 2023 at 12:59 PM Bramsh Chandio <bramshq@gmail.com> wrote:
Hi Dr. Crimi,
Thank you for your question. CC'ing Wendy here, who can help with it.
Best, Bramsh
On Fri, Dec 22, 2023 at 11:56 AM Alex Crimi via DIPY <dipy@python.org> wrote:
Dear all,
I am working on some generative model for tractography (either GAN or VAE). Originally I thought to encode from each voxel the tensor, then I have been reading the Yixue Fenga and Bramsh Q. Chandio paper with VAE generting synthetic tractography. e.g. https://www.biorxiv.org/content/10.1101/2023.02.24.529954v3.full.pdf
I also tried to decompose the FINTA, GESTA... though their library has become quite complex to study.
What is still unclear to me. Is what kind of data you pass in the first layer (not what you have in the latent space). Independently whether it is a tract or a bundle, it seems you pass entire streamline (I assume as a series of x,y,z points) not individual tensors from individual voxels. Am I right?
Can someone clarify this aspect? Thanks
Best, Alex
_______________________________________________ DIPY mailing list -- dipy@python.org To unsubscribe send an email to dipy-leave@python.org https://mail.python.org/mailman3/lists/dipy.python.org/ Member address: bramshq@gmail.com
_______________________________________________ DIPY mailing list -- dipy@python.org To unsubscribe send an email to dipy-leave@python.org https://mail.python.org/mailman3/lists/dipy.python.org/ Member address: alex.crimi@yahoo.com
<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> Virus-free.www.avast.com <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
Hi Dr Crimi, It’s great to see discussions on this topic! Yes we have tried training on healthy controls, and pass in disease bundles, using the reconstruction error as an anomaly measure ( https://www.biorxiv.org/content/10.1101/2022.07.31.502227v1). Generative models such as autoencoders or even GANs would be interesting to explore for “bundle translation” as they are used for image translation. Happy to discuss further! Best, Wendy On Sun, Dec 24, 2023 at 7:09 AM Jon Haitz Legarreta Gorroño < jon.haitz.legarreta@gmail.com> wrote:
Hi Alex,
to get as a result how the individual correct bundles should look like, right?
Not sure what you mean by "correct" in this context. If you mean that you would like to know how streamlines for a given unhealthy participant _could_ look like were this participant healthy, you could use an approach proposed in Trading Streamlines in Tractography using Autoencoders (TINTA) (ISMRM 2023).
Happy to help.
Cheers, JON HAITZ
On Sat, Dec 23, 2023 at 11:49 PM Alex Crimi <alex.crimi@yahoo.com> wrote:
Dear Wendy and Jon,
thank youd for your reply. I have now found the fibernet github
which is a lot simpler than the FIESTA to explore (sometimes things made so easy are good). In principle both FIESTA and this tool work very similarly. You usa trk loader, resample the fibers (as xyz sequences or the streamlines) and feed them to a 3-layer Encoder + 3-layer Decoder. The latent space can be used to detect anomalies and so on.
Just last confirmation, since you also use those things for generative
https://urldefense.com/v3/__https://github.com/wendyfyx/FiberNet-ConvVAE/blo... purposes, once could for instance train a model with healthy subjects and then feed the AE a disease bundle (e.g. Alzheimer or Parkinson) to get as a result how the individual correct bundles should look like, right?
Rather than detecting anomalies, more a bundle cleaner
I am not aiming at something like that but more a translation of streamlines obtained at different resolution or quality.
Best, Alex
On Friday, December 22, 2023 at 10:40:58 PM GMT+1, Wendy Feng < yixuefen@usc.edu> wrote:
Hi Dr Crimi,
Thank you for your question! In our paper, we pass entire streamlines into the network where one streamline is one sample, and the streamlines are resampled to an equal number of points to use 1D convolutional layers. The channels are x, y and z coordinates. Depending on the application, whole bundles can also be used, such as this paper by Chen et al ( https://urldefense.com/v3/__http://arxiv.org/abs/2207.02402__;!!LIr3w8kk_Xxm... ) where they use point cloud representations.
Happy to connect offline if you need more information!
Best, Wendy
On Fri, Dec 22, 2023 at 12:59 PM Bramsh Chandio <bramshq@gmail.com> wrote:
Hi Dr. Crimi,
Thank you for your question. CC'ing Wendy here, who can help with it.
Best, Bramsh
On Fri, Dec 22, 2023 at 11:56 AM Alex Crimi via DIPY <dipy@python.org> wrote:
Dear all,
I am working on some generative model for tractography (either GAN or VAE). Originally I thought to encode from each voxel the tensor, then I have been reading the Yixue Fenga and Bramsh Q. Chandio paper with VAE generting synthetic tractography. e.g. https://urldefense.com/v3/__https://www.biorxiv.org/content/10.1101/2023.02....
I also tried to decompose the FINTA, GESTA... though their library has become quite complex to study.
What is still unclear to me. Is what kind of data you pass in the first layer (not what you have in the latent space). Independently whether it is a tract or a bundle, it seems you pass entire streamline (I assume as a series of x,y,z points) not individual tensors from individual voxels. Am I right?
Can someone clarify this aspect? Thanks
Best, Alex
_______________________________________________ DIPY mailing list -- dipy@python.org To unsubscribe send an email to dipy-leave@python.org
https://urldefense.com/v3/__https://mail.python.org/mailman3/lists/dipy.pyth...
Member address: bramshq@gmail.com
_______________________________________________ DIPY mailing list -- dipy@python.org To unsubscribe send an email to dipy-leave@python.org
https://urldefense.com/v3/__https://mail.python.org/mailman3/lists/dipy.pyth...
Member address: alex.crimi@yahoo.com
Virus-free. https://urldefense.com/v3/__http://www.avast.com__;!!LIr3w8kk_Xxm!panjDkYruO... < https://urldefense.com/v3/__https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail__;!!LIr3w8kk_Xxm!panjDkYruOt3_w_95baEGSi7Ppr_WhrkTnDmXnCJCQKgzQZMAfjWmowVReETyecNvfttS1RzNdx5A6PfXjPrMdoifTc$
<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
Dear all, I did a thing last week. It is not so much for dipy, but I guess some people here are working also on functional data.I made a general Python package for brain effective connectivity:https://pypi.org/project/effconnpy/ you can install it with "pip install effconnpy", or via git: https://github.com/alecrimi/effconnpy It assumes you have preprocessed the fMRI data with fMRIprep or somethingelse, and you have extracted the time series according to an atlas.The result is a brain effective connectivity matrix. The idea is to build something consistent more people as possible can agree. I tested it on fMRI series, I didn't have time to check fro EEG or something else. The implemented methods includes: Bivariate Granger Causality, Transfer Entropy, and Convergent Cross Mapping Dynamic Bayesian Network, Structural Equation Modeling, DoWhy Causal Discovery, and Dynamic Causal Modeling (SPM free :-) ) Multivariate Granger Causality as in Barnett & Seth 2014, Multivariate Convergent Cross-Mapping (CCM) as in Nithya & Tangirala 2019, multivariate transfer entropy as in Duan et al. 2022 Please send feedback, bugs, error and suggestions for improvements. Best,Alex
Hi Alex, Congratulations on the release and thank you for sharing! Make sure that you tell neuroimaging@python.org too. Best, Elef On Tue, Jan 28, 2025 at 9:41 AM Alex Crimi via DIPY <dipy@python.org> wrote:
Dear all,
I did a thing last week. It is not so much for dipy, but I guess some people here are working also on functional data. I made a general Python package for brain effective connectivity: https://pypi.org/project/effconnpy/
you can install it with "pip install effconnpy", or via git: https://github.com/alecrimi/effconnpy
It assumes you have preprocessed the fMRI data with fMRIprep or somethingelse, and you have extracted the time series according to an atlas. The result is a brain effective connectivity matrix. The idea is to build something consistent more people as possible can agree. I tested it on fMRI series, I didn't have time to check fro EEG or something else.
The implemented methods includes:
Bivariate Granger Causality, Transfer Entropy, and Convergent Cross Mapping
Dynamic Bayesian Network, Structural Equation Modeling, DoWhy Causal Discovery, and Dynamic Causal Modeling (SPM free :-) )
Multivariate Granger Causality as in Barnett & Seth 2014, Multivariate Convergent Cross-Mapping (CCM) as in Nithya & Tangirala 2019, multivariate transfer entropy as in Duan et al. 2022
Please send feedback, bugs, error and suggestions for improvements.
Best, Alex _______________________________________________ DIPY mailing list -- dipy@python.org To unsubscribe send an email to dipy-leave@python.org https://mail.python.org/mailman3/lists/dipy.python.org/ Member address: garyfallidis@gmail.com
participants (5)
-
Alex Crimi -
Bramsh Chandio -
Eleftherios Garyfallidis -
Jon Haitz Legarreta Gorroño -
Wendy Feng