Corresponding paper: Synergy and antagonism in the integration of BCR and CD40 signals that control B-cell proliferation https://pmc.ncbi.nlm.nih.gov/articles/PMC11312454/
A combination of Receptor, NFkB, Proliferation, and Apoptosis modules. We recommend running the model on a server with at least 32 threads. To run the model, one can run the main2.jl file. There are a few options one can set:
-vfor the type of multi-thread parallelization, where the option are:"nonthread","thread","spawn"."nonthread"will run the model linearly and does not parallelize it, while"thread"will parallelize the model on static schedule, and"spawn"on dynamic schedule.-ofor the destination of output .txt cell lineage file-cfor the destination of output .jld signaling dynamics file (include output of nuclear RelA and cRel)-ifor the destination of output steady state file. In the case it is combined with-r, the path will be used to reload from previous steady states, if the parameter distribution & pre-stimulation was already done. This can be used when you would like to rerun a simulation from a .jld file generated previously.-rfor reloading from previous steady states
Example:
export JULIA_NUM_THREADS=64 # set number of threads to be used
home_dir="/path/to/dir/BCR-CD40-integration/"
modifier="lineages_125_CD40A_H62" # set the file name for outputs
julia $home_dir'Simulation_scripts/main3.jl' -v "spawn" -o $home_dir'results/'$modifier'.txt' -i $home_dir'data/steady_'$modifier'.jld' -c $home_dir'data/cells_'$modifier'.jld' >> $home_dir'job-logs/'$modifier'.out'
main3.jl: function for running the simulations and saving resultsConstantParams2.jl: constant parameters, including stimulus doses, stimulus delay, simulation time, scaling factors, etc.ReactionRates3.jl: reaction rate parameters for all moduleODE_Receptor5.jl: ODE equations for BCR and CD40 receptor modulesODE_NFkB3.jl: ODE equations for NFkB moduleODE_Apoptosis2.jl: ODE equations for Apoptosis moduleODE_Differentiation.jl: ODE equations for Differentiation moduleODE_Proliferation.jl: ODE equations for Cell Cycle moduleSimulateFunctions4+.jl: pre-simulation and simulation functionsHelperFunctions.jl: helper functions for Michaelis-Menten and Hill functions, as well as parameter distributions
Select_AOI_segmentation.ijm: semi-automate the cell segmentation process based on a selected area of interests (AOI). After automatic thresholding, the code prompts the user to manually inspect the segmentation and adjust if needed. Finally, fluorescence intensity values are measured for the RelA, cRel, and H2B channels for whole cell, nucleus, and cytoplasm.- Here’s a pseudo-code description of all the processing steps:
- Duplicate selected AOI region & build a dead cell mask from DRAQ7-APC channel (optional, as only some conditions stained for DRAQ7)
- Build a "WholeCell_Raw" image from 2 or 3 fluorescence channels
- Build a mask of the edges of the imaging grid
- Whole cell segmentation
- apply global auto threshold method (mostly Otsu, occasionally Moments)
- morphological processing: fill holes + watershed + erosion
- filter based on cell sizes and circularity
- check if ROI falls in black edge mask or dead cell mask
- Nuclear segmentation
- apply global auto threshold method (mostly Moments)
- morphological processing: fill holes + watershed + erosion
- check if ROI falls in black edge mask
- Match nucleus with best available whole cell
- has to overlap at least 30%
- delete unmatched nuclei and whole cells
- Clean up nuclei and whole cell, and compute cytoplasm
- Fluorescence intensity measurement
- In the output Results table from
Select_AOI_segmentation.ijm:Ch= fluorescence channel- when 3 channels are open:
- 1 = cRel-TFP
- 2 = H2B-mCherry
- 3 = RelA-mVenus
- when 4 channels are open (DRAQ7 as far red), then DRAQ7 becomes 1 and the rest are moved fown
- when 3 channels are open:
Group= cell morphology features- 0 = AOI selection (unimportant for quantification)
- 1 = whole cell
- 2 = nucleus
- 3 = cytoplasm
Labelcontains both morphology information + cell ID, but can be modified to include only cell ID
- Here’s a pseudo-code description of all the processing steps:
Select_AOI_CellDeath.ijm: nuclear segmentation based on H2B channel, and dead cell segmentation based on DRAQ7 channel. Final output is the number of total cells, the number of dead cells, and the percentage of dead cells out of all.Export_RepPNG_wScale.ijm: export representative images (281 x 281 pixel) in PNG format with scale bar (Figure S3). The representative image is brightness-thresholded based on median background intensity (minimum) and a batch correction factor (maximum). The script includes the min and max values for each channel at each timepoint.
Source data for all panels noted “Excel sheets” are available on BioStudies public database (www.ebi.ac.uk/biostudies) . See “Data Availability” section of the corresponding paper for accession numbers.
- Figure 1:
- Panel C,D:
NFkB trajectories (dose response + composition).ipynb - Panel E,G:
NFkB trajectories (ignore cell fates).ipynbto plot NFkB trajectories from intermediate .jld files - Panel F,H: Excel sheets
- Panel C,D:
- Figure 2:
- Panel B:
calcModelFit.Rto plot the population dynamics by generation - Panel C: Excel sheets
- Panel D,E:
calcModelFit.Rto calculate RMSD between model vs. experiment, thenRMSDheatmap.Rto plot the heatmap from Excel-tabulated results
- Panel B:
- Figure 3:
- Panel A,C:
calcModelFit.Rto plot the population dynamics by generation - Panel B,D: Excel sheets
- Panel E:
calcModelFit.Rto calculate RMSD between model vs. experiment, then used Excel to tabulate the results and plot - Panel F,G,I,J: Excel sheets
- Panel H,K:
calcReproducibility.Rto calculate RMSD between experimental replicates, then used Excel to tabulate the results and plot - Panel L: Excel sheets
- Panel M:
plotImageAnalysis5.Rto plot cell area (from Microscopy) in line plots with error bars
- Panel A,C:
- Figure 4:
- Panel B:
calcModelFit.Rto plot the population dynamics by generation - Panel C: Excel sheets
- Panel D:
calcModelFit.Rto calculate RMSD between model vs. experiment, then used Excel to tabulate the results and plot - Panel E,G:
NFkB trajectories (cell fates low vs high).ipynbto plot NFkB trajectories from intermediate .jld files - Panel F,H:
plotImageAnalysis8.Rto plot RelA and cRel fluorescence (from Microscopy) in violin and line plots overlayed with Western blot quantification
- Panel B:
- Figure 5:
- Panel A:
calcModelFit.Rto plot the population dynamics by generation - Panel B: Excel sheets
- Panel C,D,E:
plotTd2.Rfor both Kaplan-Meier curve for each CD40 and BCR dose (C,D) and the bar graph of # survived cells at 24hrs (E) - Panel F-K:
plotFateLandscape.Rfor the fate map. Need to adjust the code to specify with or without AICD - Panel L-N:
plotFateLandscapeDiff.Rto plot the difference between 2 fate maps from F-K
- Panel A:
- Figure 6:
- Panel B:
plotPopulationSize2.Rto plot the relative population size over time - Panel C: Excel sheets
- Panel B:
- Figure 7:
- Panel B:
BclXL trajectories (colored line).ipynbto plot single-cell Bcl-xL trajectories, colored with caspase 8 level - Panel C:
BclXL trajectories (colored line).ipynbto plot single-cell Bcl-xL trajectories, colored with NFkB level - Panel D:
BclXL trajectories (heatmap).ipynb(last 8 blocks) to plot the violin plot of RelA, cRel, and Bcl-xL peak activity between dead and live cells - Panel E-I:
plotFateLandscape.Rfor the fate map. Need to adjust the code to specify for with AICD - Panel G-J:
plotFateLandscapeDiff.Rto plot the difference between 2 fate maps from E-I - Panel D:
BclXL trajectories (heatmap).ipynb(last 8 blocks) to plot the violin plot of RelA, cRel, and Bcl-xL peak activity between dead and live cells - Panel E-I:
plotFateLandscape.Rfor the fate map. Need to adjust the code to specify for with AICD - Panel G-J:
plotFateLandscapeDiff.Rto plot the difference between 2 fate maps from E-I
- Panel B: