Engineering Success

Wet Lab


In our project, we adopted a three-aim approach that enhances the engineering process by breaking down complex projects into manageable objectives, fostering clarity and focus. Each aim allowed the team to concentrate on specific tasks, facilitating iterative improvement through testing and refinement.

  • Aim 1: Growing and Differentiating Bone Marrow Organoids from iPSCs
  • Aim 2: Validating the Bone Marrow Organoids
  • Aim 3: Inducing Sepsis-like Infection

We used the Design, Build, Test, Learn (DBTL) framework to improve aggregation formation in our differentiation protocol for bone marrow organoid production.

Design:

The goal was to optimize the iPSC culture and the aggregate formation process. Initially, we designed a protocol that involved passaging iPSC colonies into aggregates when they reached around 60% confluency, aiming to promote the formation of small, manageable colonies for aggregation in ultra-low attachment (ULA) plates.

Build:

We implemented this design by culturing the iPSCs and passaging them into ULA plates at 60% confluency. The intent was to facilitate the direct transfer of small colonies, anticipating that they would form robust aggregates under these conditions.

Test:

Upon testing, we observed that the colonies disintegrated significantly during the aggregation process, resulting in aggregates that were too small and fragile. These issues impeded further experimental phases, as we could not reliably collect the aggregates for downstream applications. Multiple attempts were made to validate this approach, all yielding similar results.

Learn:

Based on our observations, we learned that a higher confluency before passaging was necessary for stable aggregate formation. Adjusting the confluency to 80-90% before transferring to ULA plates resulted in significantly larger and stronger aggregates, leading to more reliable organoid production. Additionally, using cut P1000 tips gave us more control during the passaging process and helped prevent colony breakage, ensuring that the cell clusters remained intact when transferred to the ULA plates. This insight prompted us to revise our protocol, improving the overall success of the aggregation step and subsequent phases of the project.

Dry Lab


The Dry Lab team utilized a four-aim approach when developing our project:

  • Aim 1: Develop and integrate a mathematical model for iPSC cell growth and achieve a steady-state
  • Aim 2: Build on this base by adding equations for the differentiation process of iPSCs into HPSCs and its derivatives
  • Aim 3: Implement a pathogenic function into the model, and achieve the following outcomes:
    1. Infection, followed by a full recovery and a return to the original steady-state
    2. Aseptic death/death as a direct result of the pathogen
  • Aim 4: Add cytokine functions and achieve an outcome approximating septic death

Each of these aims required multiple DBTL cycles to achieve. Below are a few examples of design cycles we went through, and specifically problems we ran into, during the development of our model

Design:

Our first step in the design process for Aim 1 was defining the time-dependent equation for HSPC growth (see 'Model' page for more details on the development of our equations).

Build:

Once we had the equation, we set to integrate it into our NetLogo model. This included defining all necessary variables and setting up the environment. During this process, we decided that the system should start with an uneven seeding density. This more closely mimics real wet lab experiments, as cell colonies are not uniformily distributed across a cell plate. Integrating this into our model would in theory provide a more realistic simulation.

Test:

Upon integrating this setup function into our model, we ran our simulation 10 separate times. Every single run of the model, however, produced something similar to this (window view, code):

Here we see that some patches of cells (those appearing brown) grew logarithmically up to their carrying capacity, exactly as expected. Some patches though (those appearing black) did not grow at all and had a final cell count of 0.

Learn:

After troubleshooting the problem and reviewing our code line-by-line, we concluded that the function we created for randomly seeding the patches did not iterate enough times to ensure each patch has a low probability of having '0' initial cells. If a patch starts with 0 initial cells, there will be no growth in that particular patch since the growth rate is dependent on the current cell population. In the errant code, each patch had approximately a 10% chance of starting with 0 initial cells, meaning about 10% of patches would not have any initial cell density. To fix this, we made the function take 10 times as many steps as it initially took. This reduced the probability of a patch having 0 initial cell density to essentially 0%. The corrected code produced the following results:

Design:

Our first step in the design process for Aim 2 was defining the growth equations for each cell type that differentiated from the stem cells (see 'Model' page for more details on the development of our equations).

Build:

After creating our series of equations, we integrated them into our model. This involved defining variables for all the cell-to-cell interconversion rates, as well as each cell-specific death rate.

Test:

After integration, we tested our new functions by running the model multiple times. We noticed, however, that the populations of active and suppressive leukocytes were not matching the desired trends. When no pathogen is present, there are supposed to be no active leukocytes. This was not the case though. In fact, despite the lack of any pathogenic vector, the active and suppressive leukocyte cell counts were the highest of any cell-type.

Learn:

After reviewing our code, we found a foundational error in our system of equations. We had initially assumed that the active and suppressive leukocytes should be dependant on the population of stem cells and the population of leukocytes. This, however, was not the case. Instead, we determined that the active and suppressive leukocyte populations should be determined by the pathogen density and the leukocyte density. Once this change was implemented into the model, there were no longer any active or suppressive leukocytes without a pathogen present to elicit an immune response.

Design:

Our first step in the design process for Aim 3 was defining the equations for pathogen growth (see 'Model' page for more details on the development of our equations).

Build:

It took many design-cycles to complete Aim 3. However, after defining the 'pathogen' class of agents, the 'infect' function, and the 'infection-intensity' variable, we had completed the first step of integration and were ready to test.

Test:

After these functions were defined, we ran a series of simulations to test our new functions. We found that the infection induced the expected trends in cell-levels, but for some reason the plot that graphed pathogen count over time stayed constant at 0. This indicated that there were never any pathogens in the system, which could not be true since we see the effects of our pathogen on the cell counts.

Learn:

After re-reading every line of code involving our pathogen functions, we found the source of our confusion. In our differentiation function, we first calculated the growth of pathogens, then the growth of active leukocytes, then the death of pathogens by way of active leukocytes. This order of operations, however, was faulty. The growth of active leukocytes should be dependent on the pathogen density in the previous timestep, not the subsequent timestep. This caused any growth of pathogen to be immediately cancelled out in the following line by the growth of active leukocytes. Simply changing the order of these lines to the proper sequence fixed the issues we had and produced the expected results:

Design:

Our first step in the design process for Aim 4 was defining the growth equations for each cytokine type (pro- and anti- inflammatory). Please see 'Model' page for more details on the development of our equations.

Build:

Once we created the system of equations, we implemented them into our code. We created a class for each cytokine type and defined variables to track their concentrations over time.

Test:

Following this integration process, we tested our new functions. The cell culture procedure worked exactly as expected. As the HSPC density rose, so too did the concentration of cytokines. The differentiation procedure, however, did not produce the desired results. During differentiation, the cumulative density of the cells should increase. However, this should not significantly impact the concentration (molarity) of the cytokines. Those should remain essentially constant throughout the differentiation process. Instead, the following results were obtained:

Learn:

Reevaluating our system of equations, we decided to modify the cytokine dependency so that it only changed with the stem cell density. This resulted in the maintenance of the cytokine equillibrium that was produced in the cell culture phase of the simulation: