Skip to content

New model GSoC2026 - #24

Draft
salva24 wants to merge 25 commits into
compiler-research:masterfrom
salva24:new_model
Draft

New model GSoC2026#24
salva24 wants to merge 25 commits into
compiler-research:masterfrom
salva24:new_model

Conversation

@salva24

@salva24 salva24 commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator

This PR extends and calibrates CARTopiaX to reproduce the experimental results reported in Ando et al., Evaluating CAR-T Cell Therapy in a Hypoxic 3D Tumor Model (Advanced Healthcare Materials, 2019).

The implemented changes improve the biological realism of the simulation by reproducing the experimental setup and the observed CAR T-cell behavior under hypoxic conditions. This demonstrates CARTopiaX as a flexible and robust in silico hypothesis-testing framework capable of replicating published studies, accelerating CAR T-cell research, and reducing reliance on costly and time-consuming wet-lab experiments.

salva24 added 25 commits June 29, 2026 22:38
…oth the basal necrosis probability and the factor
… cup both with and without aging factor. fitting oxygen_saturation_for_proliferation
…ndaries z and generalization of CART cell spwan

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clang-tidy made some suggestions

There were too many comments to post at once. Showing the first 10 out of 22. Check the log or trigger a new build to see more.

Comment thread src/cart_tumor.cc
sparam->cylindrical_tumor_radius, sparam->cylindrical_tumor_height,
sparam->initial_number_of_cylindrical_tumor_cells);
} else {
Log::Error("Simulate", "Unknown tumor shape, please use 'sphere' or 'cylinder'.");

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warning: no header providing "bdm::Log" is directly included [misc-include-cleaner]

src/cart_tumor.cc:39:

- #include <cstdint>
+ #include "core/util/log.h"
+ #include <cstdint>


namespace bdm {

CylinderWallBoundaryCondition::CylinderWallBoundaryCondition(real_t value,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warning: no header providing "bdm::real_t" is directly included [misc-include-cleaner]

src/diffusion/cylinder_wall_boundary_condition.cc:21:

+ #include "core/real_t.h"

*/

#ifndef CYLINDER_WALL_BOUNDARY_CONDITION_H_
#define CYLINDER_WALL_BOUNDARY_CONDITION_H_

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warning: header guard does not follow preferred style [llvm-header-guard]

Suggested change
#define CYLINDER_WALL_BOUNDARY_CONDITION_H_
#ifndef GITHUB_WORKSPACE_SRC_DIFFUSION_CYLINDER_WALL_BOUNDARY_CONDITION_H
#define GITHUB_WORKSPACE_SRC_DIFFUSION_CYLINDER_WALL_BOUNDARY_CONDITION_H

src/diffusion/cylinder_wall_boundary_condition.h:73:

+ endif // GITHUB_WORKSPACE_SRC_DIFFUSION_CYLINDER_WALL_BOUNDARY_CONDITION_H

CylinderWallBoundaryCondition(real_t value, real_t min_z, real_t max_z);

/// @brief see BoundaryCondition::Evaluate()
real_t Evaluate(real_t x, real_t y, real_t z, real_t time) const final;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warning: function 'Evaluate' should be marked [[nodiscard]] [modernize-use-nodiscard]

Suggested change
real_t Evaluate(real_t x, real_t y, real_t z, real_t time) const final;
e()[[nodiscard]]

/// Upper z-bound (inclusive) where the boundary condition is active
real_t max_z_ = 0.0;

BDM_CLASS_DEF_OVERRIDE(CylinderWallBoundaryCondition, 1);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warning: do not use 'else' after 'return' [llvm-else-after-return]

Suggested change
BDM_CLASS_DEF_OVERRIDE(CylinderWallBoundaryCondition, 1);
0;
Additional context

biodynamo/build/include/core/util/root.h:27: expanded from macro 'BDM_CLASS_DEF_OVERRIDE'

  ClassDefOverride(class_name, class_version_id)
  ^

biodynamo/build/third_party/root/include/Rtypes.h:341: expanded from macro 'ClassDefOverride'

   _ClassDefOutline_(name,id,,override)              \
   ^

biodynamo/build/third_party/root/include/Rtypes.h:303: expanded from macro 'ClassDefOutline'

   _ClassDefBase_(name,id, virtual_keyword, overrd)                                                             \
   ^

biodynamo/build/third_party/root/include/Rtypes.h:279: expanded from macro 'ClassDefBase'

      } else if (recurseBlocker == 1) {                                                                         \
        ^

/// Upper z-bound (inclusive) where the boundary condition is active
real_t max_z_ = 0.0;

BDM_CLASS_DEF_OVERRIDE(CylinderWallBoundaryCondition, 1);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warning: use c++17 style variable templates [modernize-type-traits]

0;
      ^
Additional context

biodynamo/build/include/core/util/root.h:27: expanded from macro 'BDM_CLASS_DEF_OVERRIDE'

  ClassDefOverride(class_name, class_version_id)
  ^

biodynamo/build/third_party/root/include/Rtypes.h:341: expanded from macro 'ClassDefOverride'

   _ClassDefOutline_(name,id,,override)              \
   ^

biodynamo/build/third_party/root/include/Rtypes.h:303: expanded from macro 'ClassDefOutline'

   _ClassDefBase_(name,id, virtual_keyword, overrd)                                                             \
   ^

biodynamo/build/third_party/root/include/Rtypes.h:272: expanded from macro 'ClassDefBase'

   static_assert(std::is_integral<decltype(id)>::value,                                                         \
                 ^

Comment thread src/params/hyperparams.cc
if (jfile.contains("bounded_space_min_allowed_z")) {
bounded_space_min_allowed_z = jfile["bounded_space_min_allowed_z"].get<double>();
} else {
bounded_space_min_allowed_z = -bounded_space_length/2;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warning: result of integer division used in a floating point context; possible loss of precision [bugprone-integer-division]

    bounded_space_min_allowed_z = -bounded_space_length/2;
                                  ^

Comment thread src/params/hyperparams.cc
if (jfile.contains("bounded_space_max_allowed_z")) {
bounded_space_max_allowed_z = jfile["bounded_space_max_allowed_z"].get<double>();
} else {
bounded_space_max_allowed_z = bounded_space_length/2;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warning: result of integer division used in a floating point context; possible loss of precision [bugprone-integer-division]

    bounded_space_max_allowed_z = bounded_space_length/2;
                                  ^

Comment thread src/params/hyperparams.cc
// if the tumor shape is cylindrical it should be set to false, otherwise it should be set to true
if (tumor_shape == "cylinder") {
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers,readability-magic-numbers)
diffuse_on_z_axis = false;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warning: redundant boolean literal in conditional assignment [readability-simplify-boolean-expr]

      diffuse_on_z_axis = false;
                          ^

Comment thread src/utils/utils_aux.cc

for (size_t i = 0; i < number_of_cells; ++i) {
// sqrt ensures uniform distribution over the disk area (area element = r dr dθ)
real_t angle = random->Uniform(0.0, kTwicePi);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warning: variable 'angle' of type 'real_t' (aka 'double') can be declared 'const' [misc-const-correctness]

Suggested change
real_t angle = random->Uniform(0.0, kTwicePi);
const

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

Successfully merging this pull request may close these issues.

1 participant