@@ -590,9 +590,15 @@ def test_unused_args(self):
590
590
with pytest .raises (ValueError ):
591
591
t .draw (format = self .drawing_format , node_colours = {})
592
592
with pytest .raises (ValueError ):
593
- t .draw (format = self .drawing_format , max_tree_height = 1234 )
593
+ t .draw (format = self .drawing_format , max_time = 1234 )
594
594
with pytest .raises (ValueError ):
595
- t .draw (format = self .drawing_format , tree_height_scale = "time" )
595
+ with pytest .warns (FutureWarning ):
596
+ t .draw (format = self .drawing_format , max_tree_height = 1234 )
597
+ with pytest .raises (ValueError ):
598
+ t .draw (format = self .drawing_format , time_scale = "time" )
599
+ with pytest .raises (ValueError ):
600
+ with pytest .warns (FutureWarning ):
601
+ t .draw (format = self .drawing_format , tree_height_scale = "time" )
596
602
597
603
598
604
class TestDrawUnicode (TestDrawText ):
@@ -1381,7 +1387,7 @@ def test_tree_sequence_non_minlex(self):
1381
1387
)
1382
1388
self .verify_text_rendering (ts .draw_text (order = "tree" ), drawn_tree )
1383
1389
1384
- def test_max_tree_height (self ):
1390
+ def test_max_time (self ):
1385
1391
ts = self .get_simple_ts ()
1386
1392
tree = (
1387
1393
" 9 \n "
@@ -1399,7 +1405,7 @@ def test_max_tree_height(self):
1399
1405
"0 1 2 3\n "
1400
1406
)
1401
1407
t = ts .first ()
1402
- self .verify_text_rendering (t .draw_text (max_tree_height = "ts" ), tree )
1408
+ self .verify_text_rendering (t .draw_text (max_time = "ts" ), tree )
1403
1409
1404
1410
tree = (
1405
1411
" 9 \n "
@@ -1411,10 +1417,10 @@ def test_max_tree_height(self):
1411
1417
"0 1 2 3\n "
1412
1418
)
1413
1419
t = ts .first ()
1414
- self .verify_text_rendering (t .draw_text (max_tree_height = "tree" ), tree )
1415
- for bad_max_tree_height in [1 , "sdfr" , "" ]:
1420
+ self .verify_text_rendering (t .draw_text (max_time = "tree" ), tree )
1421
+ for bad_max_time in [1 , "sdfr" , "" ]:
1416
1422
with pytest .raises (ValueError ):
1417
- t .draw_text (max_tree_height = bad_max_tree_height )
1423
+ t .draw_text (max_time = bad_max_time )
1418
1424
1419
1425
1420
1426
class TestDrawSvg (TestTreeDraw , xmlunittest .XmlTestMixin ):
@@ -1509,7 +1515,7 @@ def test_bad_tick_spacing(self):
1509
1515
def test_no_mixed_yscales (self ):
1510
1516
ts = self .get_simple_ts ()
1511
1517
with pytest .raises (ValueError , match = "varying yscales" ):
1512
- ts .draw_svg (y_axis = True , max_tree_height = "tree" )
1518
+ ts .draw_svg (y_axis = True , max_time = "tree" )
1513
1519
1514
1520
def test_draw_defaults (self ):
1515
1521
t = self .get_binary_tree ()
@@ -1521,7 +1527,7 @@ def test_draw_defaults(self):
1521
1527
@pytest .mark .parametrize ("y_axis" , (True , False ))
1522
1528
@pytest .mark .parametrize ("y_label" , (True , False ))
1523
1529
@pytest .mark .parametrize (
1524
- "tree_height_scale " ,
1530
+ "time_scale " ,
1525
1531
(
1526
1532
"rank" ,
1527
1533
"time" ,
@@ -1530,15 +1536,15 @@ def test_draw_defaults(self):
1530
1536
@pytest .mark .parametrize ("y_ticks" , ([], [0 , 1 ], None ))
1531
1537
@pytest .mark .parametrize ("y_gridlines" , (True , False ))
1532
1538
def test_draw_svg_y_axis_parameter_combos (
1533
- self , y_axis , y_label , tree_height_scale , y_ticks , y_gridlines
1539
+ self , y_axis , y_label , time_scale , y_ticks , y_gridlines
1534
1540
):
1535
1541
t = self .get_binary_tree ()
1536
1542
svg = t .draw_svg (
1537
1543
y_axis = y_axis ,
1538
1544
y_label = y_label ,
1539
1545
y_ticks = y_ticks ,
1540
1546
y_gridlines = y_gridlines ,
1541
- tree_height_scale = tree_height_scale ,
1547
+ time_scale = time_scale ,
1542
1548
)
1543
1549
self .verify_basic_svg (svg )
1544
1550
ts = self .get_simple_ts ()
@@ -1547,7 +1553,7 @@ def test_draw_svg_y_axis_parameter_combos(
1547
1553
y_label = y_label ,
1548
1554
y_ticks = y_ticks ,
1549
1555
y_gridlines = y_gridlines ,
1550
- tree_height_scale = tree_height_scale ,
1556
+ time_scale = time_scale ,
1551
1557
)
1552
1558
self .verify_basic_svg (svg , width = 200 * ts .num_trees )
1553
1559
@@ -1680,46 +1686,57 @@ def test_one_mutation_label_colour(self):
1680
1686
self .verify_basic_svg (svg )
1681
1687
assert svg .count (f'stroke="{ colour } "' ) == 1
1682
1688
1683
- def test_bad_tree_height_scale (self ):
1689
+ def test_bad_time_scale (self ):
1684
1690
t = self .get_binary_tree ()
1685
1691
for bad_scale in ["te" , "asdf" , "" , [], b"23" ]:
1686
1692
with pytest .raises (ValueError ):
1687
- t .draw_svg (tree_height_scale = bad_scale )
1693
+ t .draw_svg (time_scale = bad_scale )
1694
+ with pytest .raises (ValueError ):
1695
+ with pytest .warns (FutureWarning ):
1696
+ t .draw_svg (tree_height_scale = bad_scale )
1688
1697
1689
- def test_bad_max_tree_height (self ):
1698
+ def test_bad_max_time (self ):
1690
1699
t = self .get_binary_tree ()
1691
1700
for bad_height in ["te" , "asdf" , "" , [], b"23" ]:
1692
1701
with pytest .raises (ValueError ):
1693
- t .draw_svg (max_tree_height = bad_height )
1702
+ t .draw_svg (max_time = bad_height )
1703
+ with pytest .raises (ValueError ):
1704
+ with pytest .warns (FutureWarning ):
1705
+ t .draw_svg (max_tree_height = bad_height )
1694
1706
1695
- def test_height_scale_time_and_max_tree_height (self ):
1707
+ def test_time_scale_time_and_max_time (self ):
1696
1708
ts = msprime .simulate (5 , recombination_rate = 2 , random_seed = 2 )
1697
1709
t = ts .first ()
1698
1710
# The default should be the same as tree.
1699
- svg1 = t .draw_svg (max_tree_height = "tree" )
1711
+ svg1 = t .draw_svg (max_time = "tree" )
1700
1712
self .verify_basic_svg (svg1 )
1701
1713
svg2 = t .draw_svg ()
1702
1714
assert svg1 == svg2
1703
- svg3 = t .draw_svg (max_tree_height = "ts" )
1715
+ svg3 = t .draw_svg (max_time = "ts" )
1704
1716
assert svg1 != svg3
1705
- svg4 = t .draw_svg (max_tree_height = max (ts .tables .nodes .time ))
1717
+ svg4 = t .draw_svg (max_time = max (ts .tables .nodes .time ))
1706
1718
assert svg3 == svg4
1707
-
1708
- def test_height_scale_rank_and_max_tree_height (self ):
1709
- # Make sure the rank height scale and max_tree_height interact properly.
1719
+ with pytest .warns (FutureWarning ):
1720
+ svg5 = t .draw_svg (max_tree_height = "tree" )
1721
+ assert svg5 == svg1
1722
+ svg6 = t .draw_svg (max_time = "tree" , max_tree_height = "i should be ignored" )
1723
+ assert svg6 == svg1
1724
+
1725
+ def test_time_scale_rank_and_max_time (self ):
1726
+ # Make sure the rank height scale and max_time interact properly.
1710
1727
ts = msprime .simulate (5 , recombination_rate = 2 , random_seed = 2 )
1711
1728
t = ts .first ()
1712
1729
# The default should be the same as tree.
1713
- svg1 = t .draw_svg (max_tree_height = "tree" , tree_height_scale = "rank" )
1730
+ svg1 = t .draw_svg (max_time = "tree" , time_scale = "rank" )
1714
1731
self .verify_basic_svg (svg1 )
1715
- svg2 = t .draw_svg (tree_height_scale = "rank" )
1732
+ svg2 = t .draw_svg (time_scale = "rank" )
1716
1733
assert svg1 == svg2
1717
- svg3 = t .draw_svg (max_tree_height = "ts" , tree_height_scale = "rank" )
1734
+ svg3 = t .draw_svg (max_time = "ts" , time_scale = "rank" )
1718
1735
assert svg1 != svg3
1719
1736
self .verify_basic_svg (svg3 )
1720
- # Numeric max tree height not supported for rank scale.
1737
+ # Numeric max time not supported for rank scale.
1721
1738
with pytest .raises (ValueError ):
1722
- t .draw_svg (max_tree_height = 2 , tree_height_scale = "rank" )
1739
+ t .draw_svg (max_time = 2 , time_scale = "rank" )
1723
1740
1724
1741
#
1725
1742
# TODO: update the tests below here to check the new SVG based interface.
@@ -1826,7 +1843,7 @@ def test_extra_mutations(self, all_muts, x_axis):
1826
1843
svg_no_css = svg [svg .find ("</style>" ) :]
1827
1844
assert svg_no_css .count ("extra" ) == 1 * extra_mut_copies
1828
1845
1829
- def test_max_tree_height (self ):
1846
+ def test_max_time (self ):
1830
1847
nodes = io .StringIO (
1831
1848
"""\
1832
1849
id is_sample time
@@ -1862,8 +1879,11 @@ def test_max_tree_height(self):
1862
1879
snippet2 = svg2 [svg2 .rfind ("edge" , 0 , str_pos ) : str_pos ]
1863
1880
assert snippet1 != snippet2
1864
1881
1865
- svg1 = ts .at_index (0 ).draw (max_tree_height = "ts" )
1866
- svg2 = ts .at_index (1 ).draw (max_tree_height = "ts" )
1882
+ svg1 = ts .at_index (0 ).draw (max_time = "ts" )
1883
+ svg2 = ts .at_index (1 ).draw (max_time = "ts" )
1884
+ with pytest .warns (FutureWarning ):
1885
+ svg3 = ts .at_index (1 ).draw (max_tree_height = "ts" )
1886
+ assert svg3 == svg2
1867
1887
# when scaled, node 3 should be at the *same* height in both trees, so the edge
1868
1888
# definition should be the same
1869
1889
self .verify_basic_svg (svg1 )
@@ -1913,25 +1933,36 @@ def test_draw_integer_breaks_ts(self):
1913
1933
1914
1934
def test_draw_even_height_ts (self ):
1915
1935
ts = msprime .simulate (5 , recombination_rate = 1 , random_seed = 1 )
1916
- svg = ts .draw_svg (max_tree_height = "tree" )
1936
+ svg = ts .draw_svg (max_time = "tree" )
1937
+ self .verify_basic_svg (svg , width = 200 * ts .num_trees )
1938
+ with pytest .warns (FutureWarning ):
1939
+ svg = ts .draw_svg (max_tree_height = "tree" )
1917
1940
self .verify_basic_svg (svg , width = 200 * ts .num_trees )
1918
1941
1919
1942
def test_draw_sized_ts (self ):
1920
1943
ts = msprime .simulate (5 , recombination_rate = 1 , random_seed = 1 )
1921
1944
svg = ts .draw_svg (size = (600 , 400 ))
1922
1945
self .verify_basic_svg (svg , width = 600 , height = 400 )
1923
1946
1924
- def test_tree_height_scale (self ):
1947
+ def test_time_scale (self ):
1925
1948
ts = msprime .simulate (4 , random_seed = 2 )
1926
- svg = ts .draw_svg (tree_height_scale = "time" )
1949
+ svg = ts .draw_svg (time_scale = "time" )
1927
1950
self .verify_basic_svg (svg )
1928
- svg = ts .draw_svg (tree_height_scale = "log_time" )
1951
+ svg = ts .draw_svg (time_scale = "log_time" )
1929
1952
self .verify_basic_svg (svg )
1930
- svg = ts .draw_svg (tree_height_scale = "rank" )
1953
+ with pytest .warns (FutureWarning ):
1954
+ svg2 = ts .draw_svg (tree_height_scale = "log_time" )
1955
+ assert svg2 == svg
1956
+ svg = ts .draw_svg (time_scale = "rank" )
1931
1957
self .verify_basic_svg (svg )
1958
+ svg3 = ts .draw_svg (time_scale = "rank" , tree_height_scale = "ignore me please" )
1959
+ assert svg3 == svg
1932
1960
for bad_scale in [0 , "" , "NOT A SCALE" ]:
1933
1961
with pytest .raises (ValueError ):
1934
- ts .draw_svg (tree_height_scale = bad_scale )
1962
+ ts .draw_svg (time_scale = bad_scale )
1963
+ with pytest .raises (ValueError ):
1964
+ with pytest .warns (FutureWarning ):
1965
+ ts .draw_svg (tree_height_scale = bad_scale )
1935
1966
1936
1967
def test_x_scale (self ):
1937
1968
ts = msprime .simulate (4 , random_seed = 2 )
@@ -1963,7 +1994,15 @@ def test_y_axis(self):
1963
1994
("log_time" , "Time" ),
1964
1995
("rank" , "Node time" ),
1965
1996
]:
1966
- svg = tree .draw_svg (y_axis = True , tree_height_scale = hscale )
1997
+ svg = tree .draw_svg (y_axis = True , time_scale = hscale )
1998
+ if hscale is not None :
1999
+ with pytest .warns (FutureWarning ):
2000
+ svg2 = tree .draw_svg (y_axis = True , tree_height_scale = hscale )
2001
+ assert svg2 == svg
2002
+ svg3 = tree .draw_svg (
2003
+ y_axis = True , time_scale = hscale , tree_height_scale = "ignore me please"
2004
+ )
2005
+ assert svg3 == svg
1967
2006
svg_no_css = svg [svg .find ("</style>" ) :]
1968
2007
assert label in svg_no_css
1969
2008
assert svg_no_css .count ("axes" ) == 1
@@ -2012,11 +2051,9 @@ def test_no_edges_show_empty(self):
2012
2051
tables = full_ts .dump_tables ()
2013
2052
tables .edges .clear ()
2014
2053
ts = tables .tree_sequence ()
2015
- for tree_height_scale in ("time" , "log_time" , "rank" ):
2054
+ for time_scale in ("time" , "log_time" , "rank" ):
2016
2055
# SVG should just be a row of 10 sample nodes
2017
- svg = ts .draw_svg (
2018
- tree_height_scale = tree_height_scale , x_lim = [0 , ts .sequence_length ]
2019
- )
2056
+ svg = ts .draw_svg (time_scale = time_scale , x_lim = [0 , ts .sequence_length ])
2020
2057
self .verify_basic_svg (svg )
2021
2058
assert svg .count ("rect" ) == 10 # Sample nodes are rectangles
2022
2059
assert svg .count ('path class="edge"' ) == 0
@@ -2199,7 +2236,7 @@ def test_known_svg_tree_y_axis_rank(self, overwrite_viz, draw_plotbox):
2199
2236
y_axis = True ,
2200
2237
y_label = label ,
2201
2238
y_gridlines = True ,
2202
- tree_height_scale = "rank" ,
2239
+ time_scale = "rank" ,
2203
2240
style = ".y-axis line.grid {stroke: #CCCCCC}" ,
2204
2241
debug_box = draw_plotbox ,
2205
2242
)
@@ -2292,13 +2329,9 @@ def test_known_svg_ts_highlighted_mut(self, overwrite_viz, draw_plotbox):
2292
2329
2293
2330
def test_known_svg_ts_rank (self , overwrite_viz , draw_plotbox ):
2294
2331
ts = self .get_simple_ts ()
2295
- svg1 = ts .draw_svg (
2296
- tree_height_scale = "rank" , y_axis = True , debug_box = draw_plotbox
2297
- )
2332
+ svg1 = ts .draw_svg (time_scale = "rank" , y_axis = True , debug_box = draw_plotbox )
2298
2333
ts = self .get_simple_ts (use_mutation_times = True )
2299
- svg2 = ts .draw_svg (
2300
- tree_height_scale = "rank" , y_axis = True , debug_box = draw_plotbox
2301
- )
2334
+ svg2 = ts .draw_svg (time_scale = "rank" , y_axis = True , debug_box = draw_plotbox )
2302
2335
assert svg1 .count ('class="site ' ) == ts .num_sites
2303
2336
assert svg1 .count ('class="mut ' ) == ts .num_mutations * 2
2304
2337
assert svg1 .replace (" unknown_time" , "" ) == svg2 # Trim the unknown_time class
@@ -2309,7 +2342,7 @@ def test_known_svg_ts_rank(self, overwrite_viz, draw_plotbox):
2309
2342
@pytest .mark .skip (reason = "Fails on CI as OSX gives different random numbers" )
2310
2343
def test_known_svg_nonbinary_ts (self , overwrite_viz , draw_plotbox ):
2311
2344
ts = self .get_nonbinary_ts ()
2312
- svg = ts .draw_svg (tree_height_scale = "log_time" , debug_box = draw_plotbox )
2345
+ svg = ts .draw_svg (time_scale = "log_time" , debug_box = draw_plotbox )
2313
2346
assert svg .count ('class="site ' ) == ts .num_sites
2314
2347
assert svg .count ('class="mut ' ) == ts .num_mutations * 2
2315
2348
self .verify_known_svg (
@@ -2395,7 +2428,7 @@ def test_known_svg_ts_y_axis_log(self, overwrite_viz, draw_plotbox):
2395
2428
svg = ts .draw_svg (
2396
2429
y_axis = True ,
2397
2430
y_label = "Time (log scale)" ,
2398
- tree_height_scale = "log_time" ,
2431
+ time_scale = "log_time" ,
2399
2432
debug_box = draw_plotbox ,
2400
2433
)
2401
2434
self .verify_known_svg (
@@ -2413,7 +2446,7 @@ def test_known_svg_ts_mutation_times(self, overwrite_viz, draw_plotbox):
2413
2446
2414
2447
def test_known_svg_ts_mutation_times_logscale (self , overwrite_viz , draw_plotbox ):
2415
2448
ts = self .get_simple_ts (use_mutation_times = True )
2416
- svg = ts .draw_svg (tree_height_scale = "log_time" , debug_box = draw_plotbox )
2449
+ svg = ts .draw_svg (time_scale = "log_time" , debug_box = draw_plotbox )
2417
2450
assert svg .count ('class="site ' ) == ts .num_sites
2418
2451
assert svg .count ('class="mut ' ) == ts .num_mutations * 2
2419
2452
self .verify_known_svg (
0 commit comments