Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

submitBulkTissue/submitDetailedO2 different values for po2field (no hypoxia observed) #10

Open
ceserthen opened this issue Feb 12, 2018 · 3 comments

Comments

@ceserthen
Copy link

I've been playing around with the bulk tissue simulation and the detailed oxygenation simulation and am concerned with some of the data I am getting. My goal was to try and replicate some of the results from your previous papers on oxygenation. (Sort of like figure C in S1 of doi:10.1371/journal.pone.0161267) However I can't get the oxygenation portion of the simulation to match up with the bulk growth simulation. I know the results shouldn't be one to one, but I was expecting some agreement on the observed hypoxia.

It seems that the detailedo2 simulation calculates that the tumor is significantly more oxygenated than the bulktissue chemical field. (No hypoxic regions observed in deatiled O2). Perhaps this is due to the default/tutorial configurations (tissue oxygen consumption?) not matching completely. Please advise if there is a better set of parameters or route to compare oxygenation of these two simulations.

All simulations were performed on ubuntu 16.04 using the master while using the o2 field output in the calcChemfields function of the bulktissue-with-vessels tumor model. I ran the code in both debug and release to verify these results. For the sake of comparison I have used the tutorial simulations as a basis. (example follows)

I began by generating a vessel network using the following command:
submitVesselgeneration -p default -t 8 -w 2000

I then ran the bulktissue with vessels simulation by running the following command:
submitBulkTissue bulktissue_tutorial vessels-default-typeI-15x19L130-sample00.h5

I then ran the detailed oxygenation simulation on each timepoint recorded by the model using the following command type (here I extended maximum iterations to 500 so that the solution would actually converge, with the default settings it does not converge {perhaps this is where the issue is?}):

submitDetailedO2 default_o2 tumBulk-default-typeI-sample00-bulktissue.h5 out000#

For simplicity, I compared the oxygen statistics for each and found the following.

Bulktissue (mol/m^3 ?; % atmO2 ?)
out0000 0: o2:stats: 0.282488+/-0.0830763\in[0.0455769,0.742228]
out0001 361: o2:stats: 0.287647+/-0.0826479\in[0.0165979,0.744337]
out0002 729: o2:stats: 0.287407+/-0.0835822\in[0.00341805,0.745488]

DetailedO2 (mm Hg)
out0000 Po2Field: 37.9324+/-5.35458\in[16.897,67.4489] in 557.895000 ms
out0001 Po2Field: 38.7803+/-5.15165\in[28.5659,67.6367] in 610.166000 ms
out0002 Po2Field: 38.9947+/-5.1367\in[28.9112,67.6995] in 563.373000 ms

I reran with the Michaelis-Menten kinetics on and the results were even worse.

out0002 Po2Field: 47.6428+/-4.02004\in[40.7675,68.8224] in 1059.385000 ms

Even considering the different units for both simulations, what I observed is that No hypoxia is observed detailed O2 compared to the bulk tissue (min po2 28.911). In fact, it seems that oxygen delivery should be increasing Whereas the normal tissue is very hypoxic. If these values don't agree, then how do we know the growth factor field is correctly calculated? Maybe I am interpreting the field statistics incorrectly.

Please advise a way to perform a comparable simulation between the two.

Thanks!

@thierry3000
Copy link
Owner

I am pleased to see that you work with this code.

In the figure you mention, there is no tumor - it is really just an application of the "detailedOxygen" simulation to one of the artificial blood vessel networks. All simulations in the latest publication where obtained by "fakeTumor" which works differently than "BulkTissue". In short: there is no feedback between growth factor and oxygenation, and no vascular oxygen transport (for more details see also https://www.biorxiv.org/content/early/2017/11/09/216903).

We used "bulkTissue" in "http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0070395" where the focus was not the oxygen itself. Therefore its dynamic was a very simple diffusion model and the longitudinal transport was completely neglected! I assume this is the reason why you observe No hypoxia when dealing with "detailedO2" vs. "bulkTissue". Because of the different model assumptions, we never compared the oxygenation of the two model. In principal I should merge the two of them in such a way that the "detailedO2" is used within the "bulkTissue".

If I would have to do such a comparison anyway, I would: 1) create vessels with constant hemoglobin (includePhaseSeparation=off); 2) choose simple binding kinetics. Extending the maximum iteration should not be a problem. The default settings were only meant to work with the examples.

I advice you to work with the "fakeTumor" until I merge the "detailedO2" and the "bulkTissue". Or you could try it yourself. I am happy to assist. The "simple_oxygen_model" is in "src/common". Feel free to contact my again.

@ceserthen
Copy link
Author

Thanks! This all makes sense. Iwas just trying to compare the simple O2 model from bulk tissue with a more descriptive model. I think I am also working with an earlier model (didn't double check that git pull worked......) I noticed I have been observing these trends for the package I installed in sep 2017 commit: 63b2b2bc. I updated to the latest version of master but have yet to reproduce the results because of a runtime error importing out###/tumor of bulk into the detailed O2 simulation. I'll try to look into this some more.

The following statements focus on the old commit but may be relevant for future integration of bulk tissue:

I actually ran the simulation to compare the detailed oxygenation results the initial parameters and :

  1. Bulk Tissue out0000:Po2Field: 37.9324+/-5.35458\in[16.897,67.4489]
  2. Fake Tumor out0000: Po2Field: 22.5879+/-8.993\in[2.36208,67.0564]
  3. Vessels: Po2Field: 23.0004+/-8.83415\in[2.57868,67.4814]

Interestingly, both the faketum and vessels have similar results. In contrast the Bulk tissue is resulting in much higher oxygenation throughout the simulation. In fact, it seems that both the fake tum and vessels math the profile from the first timepoint of the bulktissue oxygenation simulation. From this I am assuming that the bulk tissue calculations are indeed being correctly calculated.

Simply, As you alluded to above, I think that the detailed O2 analysis is not working on any time point from the detailed oxygenation simulation.

Now I'm wondering if the issue is actually with constructing the tissue phases for bulktissue in DetailedPO2::SetupTissuePhases As it is one of the few changes between the O2 simulations. Maybe there is just a unit error with the cell volume fraction. It looks like cell volume fraction of 0.4 is loaded (tumor->ptc). Compared to the others (fraction = 1) Or perhaps there is some error in how the values are recorded? The results for this can be found below.

BulkTIssue ptc = 1: Po2Field: 22.3517+/-8.95813\in[2.36119,67.0555] in 919.261000 ms

Another area where this may be showing up in the Parameters::ComputeUptake. However, I am feeding in the same parameter set each time (default_o2) so I don't think that is the case entirely.

@thierry3000
Copy link
Owner

Thank you for the input. I checked the commit history for the master branch and if I did not miss anything, I added support for boost::np. Nothing else. If you use the default boost from ubuntu16, this should not affect you (it is needed for ubuntu18).

Did you compile h5py by ourself? Like in the wiki? It often happened to me that the different present versions of hdf5 badly interacted (check your PYTHONPATH). I am working on support for the default ubuntu hdf5 and h5py. I hope this will ease things such as strange runtime errors in future.

As mentioned before, the interaction of "bulkTissue" and "detailedO2" is not well tested. Your hints are very precise and make sense to me. After solving the hdf issue, I will certainly have a look at this!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants