@@ -368,6 +368,39 @@ def test_division_rate_gap(cell_lin, feat_cell_lin):
368368 calculator .compute (Data ({}), cell_lin , noi = 99 )
369369
370370
371+ def test_division_rate_from_division_time (cell_lin , feat_cell_lin ):
372+ """Test DivisionRate from DivisionTime."""
373+ calculator = DivisionRate (feat_cell_lin , use_div_time = True )
374+ # Root.
375+ noi = 1
376+ cell_lin .nodes [noi ]["division_time" ] = 10
377+ assert calculator .compute (Data ({}), cell_lin , noi ) == 1 / 10
378+ # Divisions.
379+ noi = 2
380+ cell_lin .nodes [noi ]["division_time" ] = 20
381+ assert calculator .compute (Data ({}), cell_lin , noi ) == 1 / 20
382+ noi = 4
383+ cell_lin .nodes [noi ]["division_time" ] = 40
384+ assert calculator .compute (Data ({}), cell_lin , noi ) == 1 / 40
385+ noi = 14
386+ cell_lin .nodes [noi ]["division_time" ] = 140
387+ assert calculator .compute (Data ({}), cell_lin , noi ) == 1 / 140
388+ # Leaves.
389+ noi = 6
390+ cell_lin .nodes [noi ]["division_time" ] = 60
391+ assert calculator .compute (Data ({}), cell_lin , noi ) == 1 / 60
392+ noi = 10
393+ cell_lin .nodes [noi ]["division_time" ] = 100
394+ assert calculator .compute (Data ({}), cell_lin , noi ) == 1 / 100
395+ # Intermediate nodes.
396+ noi = 11
397+ cell_lin .nodes [noi ]["division_time" ] = 110
398+ assert calculator .compute (Data ({}), cell_lin , noi ) == 1 / 110
399+ # Non-existent node.
400+ with pytest .raises (KeyError , match = "Cell 99 not in the lineage." ):
401+ calculator .compute (Data ({}), cell_lin , noi = 99 )
402+
403+
371404def test_division_rate_cycle_lin_default_time_step (cell_lin , feat_cycle_lin ):
372405 """Test DivisionRate with CycleLineage and default time step."""
373406 calculator = DivisionRate (feat_cycle_lin )
0 commit comments