Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 10 additions & 5 deletions src/arcade/patch/agent/process/PatchProcessMetabolismComplex.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ public class PatchProcessMetabolismComplex extends PatchProcessMetabolism {
/** Rate of glucose uptake [fmol glucose/um<sup>2</sup> cell/min/M glucose]. */
private final double glucoseUptakeRate;

/** Initial cell internal glucose concentration [fmol]. */
private final double initGluc;

/**
* Creates a complex metabolism {@code Process} for the given {@link PatchCell}.
*
Expand All @@ -74,18 +77,14 @@ public class PatchProcessMetabolismComplex extends PatchProcessMetabolism {
* <li>{@code LACTATE_RATE} = rate of lactate production
* <li>{@code AUTOPHAGY_RATE} = rate of autophagy
* <li>{@code GLUCOSE_UPTAKE_RATE} = rate of glucose uptake
* <li>{@code INITIAL_GLUCOSE_CONCENTRATION} = initial cell internal glucose concentration
* </ul>
*
* @param cell the {@link PatchCell} the process is associated with
*/
public PatchProcessMetabolismComplex(PatchCell cell) {
super(cell);

// Initial internal concentrations.
intAmts = new double[2];
intAmts[GLUCOSE] = extAmts[GLUCOSE];
intAmts[PYRUVATE] = extAmts[GLUCOSE] * PYRU_PER_GLUC;

// Mapping for internal concentration access.
String[] intNames = new String[2];
intNames[GLUCOSE] = "glucose";
Expand All @@ -101,6 +100,12 @@ public PatchProcessMetabolismComplex(PatchCell cell) {
lactateRate = parameters.getDouble("metabolism/LACTATE_RATE");
autophagyRate = parameters.getDouble("metabolism/AUTOPHAGY_RATE");
glucoseUptakeRate = parameters.getDouble("metabolism/GLUCOSE_UPTAKE_RATE");
initGluc = parameters.getDouble("metabolism/INITIAL_GLUCOSE_CONCENTRATION");

// Initial internal concentrations.
intAmts = new double[2];
intAmts[GLUCOSE] = initGluc;
intAmts[PYRUVATE] = extAmts[GLUCOSE] * PYRU_PER_GLUC;
}

@Override
Expand Down
13 changes: 9 additions & 4 deletions src/arcade/patch/agent/process/PatchProcessMetabolismMedium.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ public class PatchProcessMetabolismMedium extends PatchProcessMetabolism {
/** Rate of ATP production [fmol ATP/um<sup>3</sup>/min/M glucose]. */
private final double atpProductionRate;

/** Initial cell internal glucose concentration [fmol]. */
private final double initGluc;
Copy link
Member

Choose a reason for hiding this comment

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

Since initGluc is only used in the constructor, I think you can just inline the variable

Copy link
Contributor Author

Choose a reason for hiding this comment

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

fixed !


/**
* Creates a medium metabolism {@code Process} for the given {@link PatchCell}.
*
Expand All @@ -60,17 +63,14 @@ public class PatchProcessMetabolismMedium extends PatchProcessMetabolism {
* <li>{@code MINIMUM_MASS_FRACTION} = minimum viable cell mass fraction
* <li>{@code AUTOPHAGY_RATE} = rate of autophagy
* <li>{@code ATP_PRODUCTION_RATE} = rate of ATP production
* <li>{@code INITIAL_GLUCOSE_CONCENTRATION} = initial cell internal glucose concentration
* </ul>
*
* @param cell the {@link PatchCell} the process is associated with
*/
public PatchProcessMetabolismMedium(PatchCell cell) {
super(cell);

// Initial internal concentrations.
intAmts = new double[1];
intAmts[GLUCOSE] = extAmts[GLUCOSE];

// Mapping for internal concentration access.
String[] intNames = new String[1];
intNames[GLUCOSE] = "glucose";
Expand All @@ -83,6 +83,11 @@ public PatchProcessMetabolismMedium(PatchCell cell) {
minimumMassFraction = parameters.getDouble("metabolism/MINIMUM_MASS_FRACTION");
autophagyRate = parameters.getDouble("metabolism/AUTOPHAGY_RATE");
atpProductionRate = parameters.getDouble("metabolism/ATP_PRODUCTION_RATE");
initGluc = parameters.getDouble("metabolism/INITIAL_GLUCOSE_CONCENTRATION");

// Initial internal concentrations.
intAmts = new double[1];
intAmts[GLUCOSE] = initGluc;
}

@Override
Expand Down
13 changes: 9 additions & 4 deletions src/arcade/patch/agent/process/PatchProcessMetabolismRandom.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ public class PatchProcessMetabolismRandom extends PatchProcessMetabolism {
/** Average cell volume [um<sup>3</sup>]. */
private final double averageCellVolume;

/** Initial cell internal glucose concentration [fmol]. */
private final double initGluc;

/**
* Creates a random metabolism {@code Process} for the given {@link PatchCell}.
*
Expand All @@ -57,17 +60,14 @@ public class PatchProcessMetabolismRandom extends PatchProcessMetabolism {
*
* <ul>
* <li>{@code CELL_VOLUME} = cell volume
* <li>{@code INITIAL_GLUCOSE_CONCENTRATION} = initial cell internal glucose concentration
* </ul>
*
* @param cell the {@link PatchCell} the process is associated with
*/
public PatchProcessMetabolismRandom(PatchCell cell) {
super(cell);

// Initial internal concentrations.
intAmts = new double[1];
intAmts[GLUCOSE] = extAmts[GLUCOSE];

// Mapping for internal concentration access.
String[] intNames = new String[1];
intNames[GLUCOSE] = "glucose";
Expand All @@ -76,6 +76,11 @@ public PatchProcessMetabolismRandom(PatchCell cell) {
// Set loaded parameters.
Parameters parameters = cell.getParameters();
averageCellVolume = parameters.getDouble("CELL_VOLUME");
initGluc = parameters.getDouble("metabolism/INITIAL_GLUCOSE_CONCENTRATION");

// Initial internal concentrations.
intAmts = new double[1];
intAmts[GLUCOSE] = initGluc;
}

@Override
Expand Down
13 changes: 9 additions & 4 deletions src/arcade/patch/agent/process/PatchProcessMetabolismSimple.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ public class PatchProcessMetabolismSimple extends PatchProcessMetabolism {
/** Constant volume growth rate [um<sup>3</sup>/min]. */
private final double volumeGrowthRate;

/** Initial cell internal glucose concentration [fmol]. */
private final double initGluc;

/**
* Creates a simple metabolism {@code Process} for the given {@link PatchCell}.
*
Expand All @@ -46,17 +49,14 @@ public class PatchProcessMetabolismSimple extends PatchProcessMetabolism {
* <li>{@code CONSTANT_GLUCOSE_UPTAKE_RATE} = constant glucose uptake rate
* <li>{@code CONSTANT_ATP_PRODUCTION_RATE} = constant ATP production rate
* <li>{@code CONSTANT_VOLUME_GROWTH_RATE} = constant volume growth rate
* <li>{@code INITIAL_GLUCOSE_CONCENTRATION} = initial cell internal glucose concentration
* </ul>
*
* @param cell the {@link PatchCell} the process is associated with
*/
public PatchProcessMetabolismSimple(PatchCell cell) {
super(cell);

// Initial internal concentrations.
intAmts = new double[1];
intAmts[GLUCOSE] = extAmts[GLUCOSE];

// Mapping for internal concentration access.
String[] intNames = new String[1];
intNames[GLUCOSE] = "glucose";
Expand All @@ -69,6 +69,11 @@ public PatchProcessMetabolismSimple(PatchCell cell) {
glucoseUptakeRate = parameters.getDouble("metabolism/CONSTANT_GLUCOSE_UPTAKE_RATE");
atpProductionRate = parameters.getDouble("metabolism/CONSTANT_ATP_PRODUCTION_RATE");
volumeGrowthRate = parameters.getDouble("metabolism/CONSTANT_VOLUME_GROWTH_RATE");
initGluc = parameters.getDouble("metabolism/INITIAL_GLUCOSE_CONCENTRATION");

// Initial internal concentrations.
intAmts = new double[1];
intAmts[GLUCOSE] = initGluc;
}

@Override
Expand Down
1 change: 1 addition & 0 deletions src/arcade/patch/parameter.patch.xml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
<population.process process="metabolism" id="CONSTANT_GLUCOSE_UPTAKE_RATE" value="929.88" unit="fmol glucose/min/M glucose" description="constant glucose uptake rate" />
<population.process process="metabolism" id="CONSTANT_ATP_PRODUCTION_RATE" value="4.9817" unit="fmol ATP/cell/min" description="constant ATP production rate" />
<population.process process="metabolism" id="CONSTANT_VOLUME_GROWTH_RATE" value="2.819" unit="um^3/min" description="constant volume growth rate"/>
<population.process process="metabolism" id="INITIAL_GLUCOSE_CONCENTRATION" value="0" unit="fmol" description="initial cell internal glucose concentration"/>
Copy link
Member

Choose a reason for hiding this comment

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

Don't love this being 0 by default

Copy link
Contributor Author

Choose a reason for hiding this comment

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

What default values would you suggest?

Copy link
Member

Choose a reason for hiding this comment

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

Isn't this value being 0 the source of the bug that you had identified before?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yeah - it probably makes sense to set it to the average(?) internal glucose amt of engineered cells, Im just not sure what that is.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

For now Ill set it as 30fmol since thats what CARCADE seems to be giving me, but we can revisit this value

Copy link
Member

Choose a reason for hiding this comment

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

@allison-li-1016 @cainja Possible alternative: keep the parameter as a concentration that matches the glucose concentration and do the conversion to mass in the constructor by multiplying by cell volume?


<!-- signaling process parameters -->
<population.process process="signaling" id="MIGRATORY_THRESHOLD" value="10" description="threshold fold change in PLCg for migration" />
Expand Down