unsuccessful simulation of hemodynamic changes in slab head model

60 views
Skip to first unread message

Netaniel Rein

unread,
Feb 6, 2025, 11:23:15 PM2/6/25
to mcx-users
Hello, 
I tried to simulate hemodynamic changes in a 5 layer slab model of the head and it did not yield reasonable changes. 
I used the optical coefficients described in previous articles, and I wanted to make sure that the system could detect hemodynamic changes in the standard conditions, so I started by increasing the absorbtion coefficient gradually by up to 50% (from 0.02 to 0.03) with no change in number of grey matter or total number of photons detected.
I followed this by increasing it by up to 300% with no change in number of photons detected. 
I launched 5e8 photons, 3357 total photons detected and of them 2607 traversing GM. Numbers stayed identical (including average partial path lengths) for an absorbtion coefficient ranging from 0.02-0.10. I changed the coefficient for the entire layer of the grey matter, and from what I saw in the literature the change in absorbtion coefficient due to standard changes in cerebral blood volume (CBV) should be in the range of 20% to simulate a change of 10-20% in CBV. 
All the other parameters stayed the same, and the flux maps appeared in order. 
Can you please help explain what was I doing wrong?
Netaniel

Shijie Yan

unread,
Feb 7, 2025, 12:44:20 AM2/7/25
to mcx-users
Hi Netaniel,

In MCX, each "photon" represents a packet of photon energy (commonly referred to as a "photon packet" in the literature). In most cases, photon paths are primarily determined by scattering properties—namely, the scattering coefficient and anisotropy factor. Therefore, changing only the absorption coefficient typically does not affect the number of detected photon packets in your simulations. However, the total energy of the detected photons (that traversed GM) should decrease as the absorption coefficient in GM increases.

If you could share a snippet of your script, we would be happy to take a look.

Best,
Shijie

From: mcx-...@googlegroups.com <mcx-...@googlegroups.com> on behalf of Netaniel Rein <netani...@gmail.com>
Sent: Thursday, February 6, 2025 10:35 PM
To: mcx-users <mcx-...@googlegroups.com>
Subject: [mcx-users] unsuccessful simulation of hemodynamic changes in slab head model
 
--
You received this message because you are subscribed to the Google Groups "mcx-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mcx-users+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/mcx-users/66624597-29d0-479f-a574-8d76ac08de76n%40googlegroups.com.

Netaniel Rein

unread,
Feb 13, 2025, 10:38:07 PM2/13/25
to mcx-...@googlegroups.com
Thank you for your reply!
It took me a while, but I managed to get an output of the total weight of absorbed packets by running a second simulation using the seeds of detected photons in the first simulation and subtracting the 'flux2.stat.energyabs' from the 'flux2.stat.energytot'. 
Using this method I managed to detect small changes in the absorption coefficient.
The problem I still have is that as I want to calculate shot noise I need to be able to calculate the energy absorbed/ crossing each layer. 
I would be happy for any assistance in how to get that output. 
I tried to add the 'i' here in order to get the stokes vector in - 'cfg.savedetflag='dpi';'. 
Thank you again for your help. 
All the best, 
Netaniel

‫בתאריך יום ו׳, 7 בפבר׳ 2025 ב-7:44 מאת ‪'Shijie Yan' via mcx-users‬‏ <‪mcx-...@googlegroups.com‬‏>:‬
You received this message because you are subscribed to a topic in the Google Groups "mcx-users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/mcx-users/fEJw3rfb9Ng/unsubscribe.
To unsubscribe from this group and all its topics, send an email to mcx-users+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/mcx-users/BY1PR06MB919280E547EC47214BB884169CF12%40BY1PR06MB9192.namprd06.prod.outlook.com.

Qianqian Fang

unread,
Feb 19, 2025, 10:12:43 AM2/19/25
to mcx-...@googlegroups.com

hi Netaniel,

I am a big confused - if you just want to get the total absorbed weight, why need to run two simulations? why not just use the flux.stat.energyabs in the first simulation? also, energytot-energyabs is the the total energy escaped/reflected, is this what you need?

usually the shot-noise can be characterized by repeating the simulations using different seeds, and look at SNR at different positions, please check out our 2022 JBO denoising paper, particular Figs. 6 (right-column) on how we quantified this.

https://doi.org/10.1117/1.jbo.27.8.083019

if this is not what you need, please clarify.

Qianqian


On 2/13/25 22:38, Netaniel Rein wrote:

You don't often get email from netani...@gmail.com. Learn why this is important

Reply all
Reply to author
Forward
0 new messages