Skip to content

Commit

Permalink
add Gibson/Milstein Hybrid Stoch, MovingBoundary, NFsim
Browse files Browse the repository at this point in the history
  • Loading branch information
jcschaff committed Aug 22, 2024
1 parent 2d37b6a commit 0fb37d8
Show file tree
Hide file tree
Showing 7 changed files with 1,092 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ public void testSimJobScriptFiniteVolume() throws IOException, XmlParseException

String slurmScript = createScriptForNativeSolvers(simTaskResourcePath, command, JOB_NAME);
String expectedSlurmScript = readTextFileFromResource("slurm_fixtures/finite_volume/V_REL_274514696_0_0.slurm.sub");
Assertions.assertEquals(expectedSlurmScript, slurmScript);
Assertions.assertEquals(expectedSlurmScript.trim(), slurmScript.trim());
}

@Test
Expand All @@ -182,7 +182,7 @@ public void testSimJobScriptSmoldyn() throws IOException, XmlParseException, Exp

String slurmScript = createScriptForNativeSolvers(simTaskResourcePath, command, JOB_NAME);
String expectedSlurmScript = readTextFileFromResource("slurm_fixtures/smoldyn/V_REL_274630052_0_0.slurm.sub");
Assertions.assertEquals(expectedSlurmScript, slurmScript);
Assertions.assertEquals(expectedSlurmScript.trim(), slurmScript.trim());
}

@Test
Expand All @@ -197,7 +197,53 @@ public void testSimJobScriptCVODE() throws IOException, XmlParseException, Expre

String slurmScript = createScriptForNativeSolvers(simTaskResourcePath, command, JOB_NAME);
String expectedSlurmScript = readTextFileFromResource("slurm_fixtures/cvode/V_REL_274630682_0_0.slurm.sub");
Assertions.assertEquals(expectedSlurmScript, slurmScript);
Assertions.assertEquals(expectedSlurmScript.trim(), slurmScript.trim());
}

@Test
public void testSimJobScriptNFsim() throws IOException, XmlParseException, ExpressionException {
String simTaskResourcePath = "slurm_fixtures/nfsim/SimID_274642453_0__0.simtask.xml";
String JOB_NAME = "V_REL_274642453_0_0";

String executable = "/usr/local/app/localsolvers/linux64/NFsim_x64";
String inputFilePath = "/share/apps/vcell3/users/schaff/SimID_274642453_0_.nfsimInput";
String gdatFilePath = "/share/apps/vcell3/users/schaff/SimID_274642453_0_.gdat";
String speciesFilePath = "/share/apps/vcell3/users/schaff/SimID_274642453_0_.species";
String[] command = new String[] { executable, "-seed", "716746135", "-vcell", "-xml", inputFilePath,
"-o", gdatFilePath, "-sim", "1.0", "-ss", speciesFilePath, "-oSteps", "20", "-notf", "-utl", "1000",
"-cb", "-pcmatch", "-tid", "0" };

String slurmScript = createScriptForNativeSolvers(simTaskResourcePath, command, JOB_NAME);
String expectedSlurmScript = readTextFileFromResource("slurm_fixtures/nfsim/V_REL_274642453_0_0.slurm.sub");
Assertions.assertEquals(expectedSlurmScript.trim(), slurmScript.trim());
}

@Test
public void testSimJobScriptGibsonMilstein() throws IOException, XmlParseException, ExpressionException {
String simTaskResourcePath = "slurm_fixtures/gibson_milstein/SimID_274641698_0__0.simtask.xml";
String JOB_NAME = "V_REL_274641698_0_0";

String executable = "/usr/local/app/localsolvers/linux64/Hybrid_EM_x64";
String inputFilePath = "/share/apps/vcell3/users/schaff/SimID_274641698_0_.nc";
String[] command = new String[] { executable, inputFilePath, "100.0", "10.0", "0.01", "0.1", "-OV", "-tid", "0" };

String slurmScript = createScriptForNativeSolvers(simTaskResourcePath, command, JOB_NAME);
String expectedSlurmScript = readTextFileFromResource("slurm_fixtures/gibson_milstein/V_REL_274641698_0_0.slurm.sub");
Assertions.assertEquals(expectedSlurmScript.trim(), slurmScript.trim());
}

@Test
public void testSimJobScriptMovingBoundary() throws IOException, XmlParseException, ExpressionException {
String simTaskResourcePath = "slurm_fixtures/moving_boundary/SimID_274641196_0__0.simtask.xml";
String JOB_NAME = "V_REL_274641196_0_0";

String executable = "/usr/local/app/localsolvers/linux64/MovingBoundary_x64";
String inputFilePath = "/share/apps/vcell3/users/schaff/SimID_274641196_0_mb.xml";
String[] command = new String[] { executable, "--config", inputFilePath, "-tid", "0" };

String slurmScript = createScriptForNativeSolvers(simTaskResourcePath, command, JOB_NAME);
String expectedSlurmScript = readTextFileFromResource("slurm_fixtures/moving_boundary/V_REL_274641196_0_0.slurm.sub");
Assertions.assertEquals(expectedSlurmScript.trim(), slurmScript.trim());
}

@Test
Expand All @@ -213,7 +259,7 @@ public void testSimJobScriptGibson() throws IOException, XmlParseException, Expr

String slurmScript = createScriptForNativeSolvers(simTaskResourcePath, command, JOB_NAME);
String expectedSlurmScript = readTextFileFromResource("slurm_fixtures/gibson/V_REL_274635122_0_0.slurm.sub");
Assertions.assertEquals(expectedSlurmScript, slurmScript);
Assertions.assertEquals(expectedSlurmScript.trim(), slurmScript.trim());
}

@Test
Expand All @@ -222,7 +268,7 @@ public void testSimJobScriptRK45() throws IOException, XmlParseException, Expres
String JOB_NAME = "V_REL_274631114_0_0";
String slurmScript = createScriptForJavaSolvers(simTaskResourcePath, JOB_NAME);
String expectedSlurmScript = readTextFileFromResource("slurm_fixtures/runge_kutta_fehlberg/V_REL_274631114_0_0.slurm.sub");
Assertions.assertEquals(expectedSlurmScript, slurmScript);
Assertions.assertEquals(expectedSlurmScript.trim(), slurmScript.trim());
}

@Test
Expand All @@ -231,7 +277,7 @@ public void testSimJobScriptAdamsMoulton() throws IOException, XmlParseException
String JOB_NAME = "V_REL_274633859_0_0";
String slurmScript = createScriptForJavaSolvers(simTaskResourcePath, JOB_NAME);
String expectedSlurmScript = readTextFileFromResource("slurm_fixtures/adams_moulton/V_REL_274633859_0_0.slurm.sub");
Assertions.assertEquals(expectedSlurmScript, slurmScript);
Assertions.assertEquals(expectedSlurmScript.trim(), slurmScript.trim());
}

private String readTextFileFromResource(String filename) throws IOException {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
<SimulationTask xmlns="http://sourceforge.net/projects/vcell/vcml" TaskId="0" JobIndex="0" isPowerUser="false">
<MathDescription Name="Copy of 3D pde_generated">
<Annotation>cloned from 'Copy of 3D pde_generated' owned by user frm
cloned from 'Copy of 3D pde_generated' owned by user anu
cloned from 'Copy of 3D pde_generated' owned by user schaff
cloned from 'Copy of 3D pde_generated' owned by user les</Annotation>
<Constant Name="_F_">96485.3321</Constant>
<Constant Name="_F_nmol_">9.64853321E-5</Constant>
<Constant Name="_N_pmol_">6.02214179E11</Constant>
<Constant Name="_PI_">3.141592653589793</Constant>
<Constant Name="_R_">8314.46261815</Constant>
<Constant Name="_T_">300.0</Constant>
<Constant Name="C_cyt_Count_initCount">0.0</Constant>
<Constant Name="Kf">2.0</Constant>
<Constant Name="kfl">2.0</Constant>
<Constant Name="KMOLE">0.001660538783162726</Constant>
<Constant Name="Kr">1000.0</Constant>
<Constant Name="netValence">1.0</Constant>
<Constant Name="Ran_cyt_Count_initCount">0.0</Constant>
<Constant Name="RanC_cyt_Count_initCount">0.0</Constant>
<Constant Name="RanC_nuc_Count_initCount">100.0</Constant>
<Constant Name="s2_Count_initCount">0.0</Constant>
<Constant Name="Size_cyt">14891.899581611733</Constant>
<Constant Name="Size_EC">124712.10435961554</Constant>
<Constant Name="Size_nm">1406.7733692487282</Constant>
<Constant Name="Size_nuc">3697.013658772733</Constant>
<Constant Name="Size_pm">4738.640600365477</Constant>
<Constant Name="UnitFactor_molecules_uM_neg_1_um_neg_3">(1.0 * pow(KMOLE, - 1.0))</Constant>
<Constant Name="UnitFactor_uM_um3_molecules_neg_1">(1.0 * pow(KMOLE,1.0))</Constant>
<Constant Name="Voltage_nm">0.0</Constant>
<Constant Name="Voltage_pm">0.0</Constant>
<StochasticVolumeVariable Name="C_cyt_Count" />
<StochasticVolumeVariable Name="Ran_cyt_Count" />
<StochasticVolumeVariable Name="RanC_cyt_Count" />
<StochasticVolumeVariable Name="RanC_nuc_Count" />
<StochasticVolumeVariable Name="s2_Count" />
<Function Name="C_cyt" Domain="Compartment">((C_cyt_Count * UnitFactor_uM_um3_molecules_neg_1) / Size_cyt)</Function>
<Function Name="J_flux0" Domain="Compartment">(kfl * (RanC_cyt - RanC_nuc))</Function>
<Function Name="J_r0" Domain="Compartment">((Kf * RanC_cyt) - ((Kr * Ran_cyt) * C_cyt))</Function>
<Function Name="P_flux0_probabilityRate" Domain="Compartment">(UnitFactor_molecules_uM_neg_1_um_neg_3 * kfl * Size_nm * RanC_cyt)</Function>
<Function Name="P_flux0_reverse_probabilityRate" Domain="Compartment">(kfl * UnitFactor_molecules_uM_neg_1_um_neg_3 * Size_nm * RanC_nuc)</Function>
<Function Name="P_r0_probabilityRate" Domain="Compartment">(Kf * RanC_cyt_Count * UnitFactor_molecules_uM_neg_1_um_neg_3 * UnitFactor_uM_um3_molecules_neg_1)</Function>
<Function Name="P_r0_reverse_probabilityRate" Domain="Compartment">(Kr * Ran_cyt_Count * C_cyt_Count * UnitFactor_molecules_uM_neg_1_um_neg_3 * UnitFactor_uM_um3_molecules_neg_1 * UnitFactor_uM_um3_molecules_neg_1 / Size_cyt)</Function>
<Function Name="Ran_cyt" Domain="Compartment">((Ran_cyt_Count * UnitFactor_uM_um3_molecules_neg_1) / Size_cyt)</Function>
<Function Name="RanC_cyt" Domain="Compartment">((RanC_cyt_Count * UnitFactor_uM_um3_molecules_neg_1) / Size_cyt)</Function>
<Function Name="RanC_nuc" Domain="Compartment">((RanC_nuc_Count * UnitFactor_uM_um3_molecules_neg_1) / Size_nuc)</Function>
<Function Name="s2" Domain="Compartment">(s2_Count / Size_pm)</Function>
<CompartmentSubDomain Name="Compartment">
<BoundaryType Boundary="Xm" Type="Value" />
<BoundaryType Boundary="Xp" Type="Value" />
<BoundaryType Boundary="Ym" Type="Value" />
<BoundaryType Boundary="Yp" Type="Value" />
<BoundaryType Boundary="Zm" Type="Value" />
<BoundaryType Boundary="Zp" Type="Value" />
<VariableInitialCount Name="RanC_cyt_Count">RanC_cyt_Count_initCount</VariableInitialCount>
<VariableInitialCount Name="Ran_cyt_Count">Ran_cyt_Count_initCount</VariableInitialCount>
<VariableInitialCount Name="C_cyt_Count">C_cyt_Count_initCount</VariableInitialCount>
<VariableInitialCount Name="RanC_nuc_Count">RanC_nuc_Count_initCount</VariableInitialCount>
<VariableInitialCount Name="s2_Count">s2_Count_initCount</VariableInitialCount>
<JumpProcess Name="r0">
<ProbabilityRate>P_r0_probabilityRate</ProbabilityRate>
<Effect VarName="RanC_cyt_Count" Operation="inc">-1.0</Effect>
<Effect VarName="Ran_cyt_Count" Operation="inc">1.0</Effect>
<Effect VarName="C_cyt_Count" Operation="inc">1.0</Effect>
</JumpProcess>
<JumpProcess Name="r0_reverse">
<ProbabilityRate>P_r0_reverse_probabilityRate</ProbabilityRate>
<Effect VarName="RanC_cyt_Count" Operation="inc">1.0</Effect>
<Effect VarName="Ran_cyt_Count" Operation="inc">-1.0</Effect>
<Effect VarName="C_cyt_Count" Operation="inc">-1.0</Effect>
</JumpProcess>
<JumpProcess Name="flux0">
<ProbabilityRate>P_flux0_probabilityRate</ProbabilityRate>
<Effect VarName="RanC_cyt_Count" Operation="inc">-1.0</Effect>
<Effect VarName="RanC_nuc_Count" Operation="inc">1.0</Effect>
</JumpProcess>
<JumpProcess Name="flux0_reverse">
<ProbabilityRate>P_flux0_reverse_probabilityRate</ProbabilityRate>
<Effect VarName="RanC_cyt_Count" Operation="inc">1.0</Effect>
<Effect VarName="RanC_nuc_Count" Operation="inc">-1.0</Effect>
</JumpProcess>
</CompartmentSubDomain>
<Version Name="Copy of 3D pde_generated" KeyValue="252546354" BranchId="84086541" Archived="0" Date="08-Feb-2023 01:54:34" FromVersionable="false">
<Owner Name="schaff" Identifier="17" />
<GroupAccess Type="1" />
<Annotation>cloned from 'Copy of 3D pde_generated' owned by user frm
cloned from 'Copy of 3D pde_generated' owned by user anu
cloned from 'Copy of 3D pde_generated' owned by user schaff
cloned from 'Copy of 3D pde_generated' owned by user les</Annotation>
</Version>
</MathDescription>
<Simulation Name="Copy of Copy of Hybrid Gibson Milstein">
<Annotation>cloned from 'Copy of Hybrid Gibson Milstein' owned by user frm
cloned from 'Hybrid Gibson Milstein' owned by user anu
cloned from 'Hybrid Gibson Milstein' owned by user schaff
cloned from 'Simulation0' owned by user les</Annotation>
<SolverTaskDescription TaskType="Unsteady" UseSymbolicJacobian="false" Solver="Hybrid (Gibson + Milstein Method)">
<TimeBound StartTime="0.0" EndTime="15.0" />
<TimeStep DefaultTime="0.1" MinTime="1.0E-8" MaxTime="1.0" />
<ErrorTolerance Absolut="1.0E-9" Relative="1.0E-9" />
<StochSimOptions UseCustomSeed="false" NumberOfTrial="1" Histogram="false" Epsilon="100.0" Lambda="10.0" MSRTolerance="0.01" SDETolerance="1.0E-4" />
<OutputOptions OutputTimeStep="0.5" />
<NumberProcessors>1</NumberProcessors>
</SolverTaskDescription>
<MathOverrides />
<Version Name="Copy of Copy of Hybrid Gibson Milstein" KeyValue="274641698" BranchId="274641699" Archived="0" Date="22-Aug-2024 00:50:57" FromVersionable="false">
<Owner Name="schaff" Identifier="17" />
<GroupAccess Type="1" />
<Annotation>cloned from 'Copy of Hybrid Gibson Milstein' owned by user frm
cloned from 'Hybrid Gibson Milstein' owned by user anu
cloned from 'Hybrid Gibson Milstein' owned by user schaff
cloned from 'Simulation0' owned by user les</Annotation>
</Version>
</Simulation>
<Geometry Name="nonspatial1435481798" Dimension="0">
<Annotation>cloned from 'nonspatial1435481798' owned by user frm
cloned from 'nonspatial660203233' owned by user anu
cloned from 'nonspatial637508148' owned by user schaff
cloned from 'nonspatial608887770' owned by user les</Annotation>
<Extent X="10.0" Y="10.0" Z="10.0" />
<Origin X="0.0" Y="0.0" Z="0.0" />
<SubVolume Name="Compartment" Handle="0" Type="Compartmental" KeyValue="252545856" />
<Version Name="nonspatial1435481798" KeyValue="252545853" BranchId="84086514" Archived="0" Date="08-Feb-2023 01:53:13" FromVersionable="false">
<Owner Name="schaff" Identifier="17" />
<GroupAccess Type="1" />
<Annotation>cloned from 'nonspatial1435481798' owned by user frm
cloned from 'nonspatial660203233' owned by user anu
cloned from 'nonspatial637508148' owned by user schaff
cloned from 'nonspatial608887770' owned by user les</Annotation>
</Version>
</Geometry>
</SimulationTask>
Loading

0 comments on commit 0fb37d8

Please sign in to comment.