Skip to content

Commit 74535a5

Browse files
committed
SPRUCE for mS
1 parent 3b3fee2 commit 74535a5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+8905
-525
lines changed

CMakeLists.txt

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,21 @@ set( pmh_pr_src
8787
set( ms_hdr
8888
src/utils.h
8989
src/frequencymatrix.h
90+
src/nonbinaryclonetree.h
91+
src/clonetree.h
92+
src/binarytree.h
93+
src/spruce/matrix.h
94+
src/spruce/realmatrix.h
95+
src/spruce/realtensor.h
96+
src/spruce/rootedcladisticancestrygraph.h
97+
src/spruce/rootedcladisticnoisyancestrygraph.h
98+
src/spruce/rootedcladisticenumeration.h
99+
src/spruce/rootedcladisticnoisyenumeration.h
100+
src/rootedcladisticnoisysparseenumeration.h
101+
src/spruce/solution.h
102+
src/spruce/solutionset.h
103+
src/spruce/statetree.h
104+
src/spruce/tensor.h
90105
)
91106

92107
set( ms_src
@@ -95,6 +110,50 @@ set( ms_src
95110
src/frequencymatrix.cpp
96111
src/utils.h
97112
src/frequencymatrix.h
113+
src/migrationtree.h
114+
src/migrationtree.cpp
115+
src/basetree.h
116+
src/basetree.cpp
117+
src/gabowmyers.h
118+
src/gabowmyers.cpp
119+
src/msenumeration.h
120+
src/msenumeration.cpp
121+
src/nonbinaryclonetree.h
122+
src/clonetree.h
123+
src/binarytree.h
124+
src/nonbinaryclonetree.cpp
125+
src/clonetree.cpp
126+
src/binarytree.cpp
127+
src/rootedcladisticnoisysparseenumeration.h
128+
src/rootedcladisticnoisysparseenumeration.cpp
129+
src/spruce/matrix.h
130+
src/spruce/perfectphylograph.h
131+
src/spruce/perfectphylomatrix.h
132+
src/spruce/perfectphylotree.h
133+
src/spruce/realmatrix.h
134+
src/spruce/realtensor.h
135+
src/spruce/rootedcladisticancestrygraph.h
136+
src/spruce/rootedcladisticnoisyancestrygraph.h
137+
src/spruce/rootedcladisticenumeration.h
138+
src/spruce/rootedcladisticnoisyenumeration.h
139+
src/spruce/stategraph.h
140+
src/spruce/statetree.h
141+
src/spruce/tensor.h
142+
src/spruce/matrix.cpp
143+
src/spruce/perfectphylograph.cpp
144+
src/spruce/perfectphylomatrix.cpp
145+
src/spruce/perfectphylotree.cpp
146+
src/spruce/realmatrix.cpp
147+
src/spruce/realtensor.cpp
148+
src/spruce/rootedcladisticancestrygraph.cpp
149+
src/spruce/rootedcladisticnoisyancestrygraph.cpp
150+
src/spruce/rootedcladisticenumeration.cpp
151+
src/spruce/rootedcladisticnoisyenumeration.cpp
152+
src/spruce/solution.cpp
153+
src/spruce/solutionset.cpp
154+
src/spruce/stategraph.cpp
155+
src/spruce/statetree.cpp
156+
src/spruce/tensor.cpp
98157
)
99158

100159
set( pmh_cti_hdr
@@ -273,7 +332,8 @@ target_include_directories( pmh_cti PUBLIC "${LIBLEMON_ROOT}/include" "src" ${Bo
273332
target_link_libraries( pmh_cti ${CommonLibs} ${GUROBI_LIBRARIES} )
274333

275334
add_executable( ms ${ms_src} ${ms_hdr} )
276-
target_link_libraries( ms ${CommonLibs} )
335+
target_include_directories( ms PUBLIC "${LIBLEMON_ROOT}/include" "src" ${Boost_INCLUDE_DIRS} ${GUROBI_INCLUDE_DIR} )
336+
target_link_libraries( ms ${CommonLibs} ${GUROBI_LIBRARIES})
277337

278338
add_executable( generatemigrationtrees ${generatemigrationtrees_src} ${generatemigrationtrees_hdr} )
279339
target_link_libraries( generatemigrationtrees ${CommonLibs} )

data/hoadley_2016/A1/F.tsv

Lines changed: 49 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,49 @@
1-
5 #m
2-
9 #n
3-
#sample_index sample_label character_label (character_index,(1,1,1)) vaf_lb vaf_ub
4-
0 breast 0 (cluster_1,(1,1,1)) 0.233404098386 0.348986366178
5-
0 breast 1 (cluster_2,(1,1,1)) 0.0447468389385 0.0682422323764
6-
0 breast 2 (cluster_3,(1,1,1)) 0.212625579812 0.247076190381
7-
0 breast 3 (cluster_4,(1,1,1)) 0.0269547016074 0.0381564269323
8-
0 breast 4 (cluster_5,(1,1,1)) 0.204146049264 0.246239602273
9-
0 breast 5 (cluster_6,(1,1,1)) 0.0 0.00250226035803
10-
0 breast 6 (cluster_7,(1,1,1)) 0.0192418451607 0.0359444108084
11-
0 breast 7 (cluster_8,(1,1,1)) 0.172330106763 0.232278601764
12-
0 breast 8 (cluster_9,(1,1,1)) 0.0 0.00217253528788
13-
1 adrenal 0 (cluster_1,(1,1,1)) 0.289076246019 0.413614980654
14-
1 adrenal 1 (cluster_2,(1,1,1)) 0.386509723307 0.43789863116
15-
1 adrenal 2 (cluster_3,(1,1,1)) 0.0 0.00240981364014
16-
1 adrenal 3 (cluster_4,(1,1,1)) 0.216161523283 0.243570601703
17-
1 adrenal 4 (cluster_5,(1,1,1)) 0.0 0.00412514097384
18-
1 adrenal 5 (cluster_6,(1,1,1)) 0.193302597203 0.243697722601
19-
1 adrenal 6 (cluster_7,(1,1,1)) 0.0 0.00242516416543
20-
1 adrenal 7 (cluster_8,(1,1,1)) 0.0 0.00318754183149
21-
1 adrenal 8 (cluster_9,(1,1,1)) 0.0 0.00194034435437
22-
2 liver 0 (cluster_1,(1,1,1)) 0.38172259683 0.504154977275
23-
2 liver 1 (cluster_2,(1,1,1)) 0.414945260453 0.468998925391
24-
2 liver 2 (cluster_3,(1,1,1)) 0.0 0.00255482704998
25-
2 liver 3 (cluster_4,(1,1,1)) 0.234965064245 0.262820070455
26-
2 liver 4 (cluster_5,(1,1,1)) 0.0 0.0047042459239
27-
2 liver 5 (cluster_6,(1,1,1)) 0.0 0.0046315469148
28-
2 liver 6 (cluster_7,(1,1,1)) 0.197905603118 0.240325619263
29-
2 liver 7 (cluster_8,(1,1,1)) 0.0 0.00268046817607
30-
2 liver 8 (cluster_9,(1,1,1)) 0.0 0.00115735983434
31-
3 lung 0 (cluster_1,(1,1,1)) 0.142201239475 0.253323394451
32-
3 lung 1 (cluster_2,(1,1,1)) 0.0 0.0231450477419
33-
3 lung 2 (cluster_3,(1,1,1)) 0.133113344653 0.165431294007
34-
3 lung 3 (cluster_4,(1,1,1)) 0.0 0.00645626185071
35-
3 lung 4 (cluster_5,(1,1,1)) 0.124345471383 0.162676924056
36-
3 lung 5 (cluster_6,(1,1,1)) 0.0 0.00437135736632
37-
3 lung 6 (cluster_7,(1,1,1)) 0.0 0.00322939017581
38-
3 lung 7 (cluster_8,(1,1,1)) 0.0 0.0146620047303
39-
3 lung 8 (cluster_9,(1,1,1)) 0.0 0.00300897250122
40-
4 spinal 0 (cluster_1,(1,1,1)) 0.147243665725 0.251597885528
41-
4 spinal 1 (cluster_2,(1,1,1)) 0.0 0.00558717557974
42-
4 spinal 2 (cluster_3,(1,1,1)) 0.178743722467 0.212135393642
43-
4 spinal 3 (cluster_4,(1,1,1)) 0.0 0.00187073466735
44-
4 spinal 4 (cluster_5,(1,1,1)) 0.0 0.0090880997069
45-
4 spinal 5 (cluster_6,(1,1,1)) 0.0 0.00264834599067
46-
4 spinal 6 (cluster_7,(1,1,1)) 0.0 0.00095877275322
47-
4 spinal 7 (cluster_8,(1,1,1)) 0.0 0.00191497496477
48-
4 spinal 8 (cluster_9,(1,1,1)) 0.173293022969 0.201753634279
1+
5 #anatomical sites
2+
5 #samples
3+
9 #mutations
4+
#sample_index sample_label #sample_index sample_label character_index character_label f_lb f_ub
5+
0 breast 0 breast 0 1 0.466808197 0.697972732
6+
0 breast 0 breast 1 2 0.089493678 0.136484465
7+
0 breast 0 breast 2 3 0.42525116 0.494152381
8+
0 breast 0 breast 3 4 0.053909403 0.076312854
9+
0 breast 0 breast 4 5 0.408292099 0.492479205
10+
0 breast 0 breast 5 6 0 0.005004521
11+
0 breast 0 breast 6 7 0.03848369 0.071888822
12+
0 breast 0 breast 7 8 0.344660214 0.464557204
13+
0 breast 0 breast 8 9 0 0.004345071
14+
1 adrenal 1 adrenal 0 1 0.578152492 0.827229961
15+
1 adrenal 1 adrenal 1 2 0.773019447 0.875797262
16+
1 adrenal 1 adrenal 2 3 0 0.004819627
17+
1 adrenal 1 adrenal 3 4 0.432323047 0.487141203
18+
1 adrenal 1 adrenal 4 5 0 0.008250282
19+
1 adrenal 1 adrenal 5 6 0.386605194 0.487395445
20+
1 adrenal 1 adrenal 6 7 0 0.004850328
21+
1 adrenal 1 adrenal 7 8 0 0.006375084
22+
1 adrenal 1 adrenal 8 9 0 0.003880689
23+
2 liver 2 liver 0 1 0.763445194 1.008309955
24+
2 liver 2 liver 1 2 0.829890521 0.937997851
25+
2 liver 2 liver 2 3 0 0.005109654
26+
2 liver 2 liver 3 4 0.469930128 0.525640141
27+
2 liver 2 liver 4 5 0 0.009408492
28+
2 liver 2 liver 5 6 0 0.009263094
29+
2 liver 2 liver 6 7 0.395811206 0.480651239
30+
2 liver 2 liver 7 8 0 0.005360936
31+
2 liver 2 liver 8 9 0 0.00231472
32+
3 lung 3 lung 0 1 0.284402479 0.506646789
33+
3 lung 3 lung 1 2 0 0.046290095
34+
3 lung 3 lung 2 3 0.266226689 0.330862588
35+
3 lung 3 lung 3 4 0 0.012912524
36+
3 lung 3 lung 4 5 0.248690943 0.325353848
37+
3 lung 3 lung 5 6 0 0.008742715
38+
3 lung 3 lung 6 7 0 0.00645878
39+
3 lung 3 lung 7 8 0 0.029324009
40+
3 lung 3 lung 8 9 0 0.006017945
41+
4 spinal 4 spinal 0 1 0.294487331 0.503195771
42+
4 spinal 4 spinal 1 2 0 0.011174351
43+
4 spinal 4 spinal 2 3 0.357487445 0.424270787
44+
4 spinal 4 spinal 3 4 0 0.003741469
45+
4 spinal 4 spinal 4 5 0 0.018176199
46+
4 spinal 4 spinal 5 6 0 0.005296692
47+
4 spinal 4 spinal 6 7 0 0.001917546
48+
4 spinal 4 spinal 7 8 0 0.00382995
49+
4 spinal 4 spinal 8 9 0.346586046 0.403507269

data/hoadley_2016/A7/F.tsv

Lines changed: 64 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,64 @@
1-
6 #m
2-
10 #n
3-
#sample_index sample_label character_label (character_index,(1,1,1)) vaf_lb vaf_ub
4-
0 breast 0 (cluster_1,(1,1,1)) 0.251814261011 0.272618747476
5-
0 breast 1 (cluster_2,(1,1,1)) 0.0 0.00606896994454
6-
0 breast 2 (cluster_3,(1,1,1)) 0.0 0.00258710974892
7-
0 breast 3 (cluster_4,(1,1,1)) 0.0 0.00257813012212
8-
0 breast 4 (cluster_5,(1,1,1)) 0.0 0.00502849419312
9-
0 breast 5 (cluster_6,(1,1,1)) 0.0 0.00136494674016
10-
0 breast 6 (cluster_7,(1,1,1)) 0.0 0.00279485702516
11-
0 breast 7 (cluster_8,(1,1,1)) 0.0 0.00452646783461
12-
0 breast 8 (cluster_9,(1,1,1)) 0.0 0.00127996802823
13-
0 breast 9 (cluster_10,(1,1,1)) 0.0 0.00544661985507
14-
1 brain 0 (cluster_1,(1,1,1)) 0.317348191093 0.336480039584
15-
1 brain 1 (cluster_2,(1,1,1)) 0.0 0.018645436224
16-
1 brain 2 (cluster_3,(1,1,1)) 0.0 0.0134889508788
17-
1 brain 3 (cluster_4,(1,1,1)) 0.303235502274 0.342074873841
18-
1 brain 4 (cluster_5,(1,1,1)) 0.0 0.00241896439976
19-
1 brain 5 (cluster_6,(1,1,1)) 0.0 0.000841055637795
20-
1 brain 6 (cluster_7,(1,1,1)) 0.0 0.00518039280523
21-
1 brain 7 (cluster_8,(1,1,1)) 0.0 0.00180922385985
22-
1 brain 8 (cluster_9,(1,1,1)) 0.0 0.00297556669336
23-
1 brain 9 (cluster_10,(1,1,1)) 0.14110601336 0.22535297576
24-
2 kidney 0 (cluster_1,(1,1,1)) 0.204807535738 0.219923591647
25-
2 kidney 1 (cluster_2,(1,1,1)) 0.188407589946 0.236212671974
26-
2 kidney 2 (cluster_3,(1,1,1)) 0.19425011927 0.227363965311
27-
2 kidney 3 (cluster_4,(1,1,1)) 0.0 0.00291339866541
28-
2 kidney 4 (cluster_5,(1,1,1)) 0.174672534255 0.238966427263
29-
2 kidney 5 (cluster_6,(1,1,1)) 0.0 0.00155563441477
30-
2 kidney 6 (cluster_7,(1,1,1)) 0.0 0.00338608899957
31-
2 kidney 7 (cluster_8,(1,1,1)) 0.188681158488 0.232354137582
32-
2 kidney 8 (cluster_9,(1,1,1)) 0.0 0.00136829360804
33-
2 kidney 9 (cluster_10,(1,1,1)) 0.0 0.00577302107827
34-
3 liver 0 (cluster_1,(1,1,1)) 0.408969024814 0.430800014643
35-
3 liver 1 (cluster_2,(1,1,1)) 0.412221409159 0.480946346199
36-
3 liver 2 (cluster_3,(1,1,1)) 0.42169653939 0.470103711898
37-
3 liver 3 (cluster_4,(1,1,1)) 0.0 0.00192602774478
38-
3 liver 4 (cluster_5,(1,1,1)) 0.341603969783 0.435384406448
39-
3 liver 5 (cluster_6,(1,1,1)) 0.0 0.00146415160562
40-
3 liver 6 (cluster_7,(1,1,1)) 0.0 0.00554498155549
41-
3 liver 7 (cluster_8,(1,1,1)) 0.0 0.00320002996745
42-
3 liver 8 (cluster_9,(1,1,1)) 0.175597268593 0.200087215992
43-
3 liver 9 (cluster_10,(1,1,1)) 0.0 0.00491158898122
44-
4 lung 0 (cluster_1,(1,1,1)) 0.336802039859 0.359616607788
45-
4 lung 1 (cluster_2,(1,1,1)) 0.0101464076224 0.030491599369
46-
4 lung 2 (cluster_3,(1,1,1)) 0.0 0.00304676454878
47-
4 lung 3 (cluster_4,(1,1,1)) 0.303324036039 0.34860009681
48-
4 lung 4 (cluster_5,(1,1,1)) 0.0 0.00542750944371
49-
4 lung 5 (cluster_6,(1,1,1)) 0.0106246772199 0.0181306565222
50-
4 lung 6 (cluster_7,(1,1,1)) 0.251288047307 0.337469921452
51-
4 lung 7 (cluster_8,(1,1,1)) 0.0 0.00326676003969
52-
4 lung 8 (cluster_9,(1,1,1)) 0.0 0.00115048919356
53-
4 lung 9 (cluster_10,(1,1,1)) 0.0 0.00582750186024
54-
5 rib 0 (cluster_1,(1,1,1)) 0.354621100211 0.376411092982
55-
5 rib 1 (cluster_2,(1,1,1)) 0.323406107502 0.392548588998
56-
5 rib 2 (cluster_3,(1,1,1)) 0.0 0.0012957106716
57-
5 rib 3 (cluster_4,(1,1,1)) 0.0 0.00341154060258
58-
5 rib 4 (cluster_5,(1,1,1)) 0.0 0.00496966570575
59-
5 rib 5 (cluster_6,(1,1,1)) 0.329015675184 0.358251820549
60-
5 rib 6 (cluster_7,(1,1,1)) 0.0 0.00556308111763
61-
5 rib 7 (cluster_8,(1,1,1)) 0.0 0.0022671115687
62-
5 rib 8 (cluster_9,(1,1,1)) 0.0 0.00102613664184
63-
5 rib 9 (cluster_10,(1,1,1)) 0.0 0.0055187604278
1+
6 #anatomical sites
2+
6 #samples
3+
10 #mutation clusters
4+
#sample_index sample_label anatomical_site_index anatomical_site_label character_index character_label f_lb f_ub
5+
0 breast 0 breast 0 1 0.503628522 0.545237495
6+
0 breast 0 breast 1 2 0 0.01213794
7+
0 breast 0 breast 2 3 0 0.005174219
8+
0 breast 0 breast 3 4 0 0.00515626
9+
0 breast 0 breast 4 5 0 0.010056988
10+
0 breast 0 breast 5 6 0 0.002729893
11+
0 breast 0 breast 6 7 0 0.005589714
12+
0 breast 0 breast 7 8 0 0.009052936
13+
0 breast 0 breast 8 9 0 0.002559936
14+
0 breast 0 breast 9 10 0 0.01089324
15+
1 brain 1 brain 0 1 0.634696382 0.672960079
16+
1 brain 1 brain 1 2 0 0.037290872
17+
1 brain 1 brain 2 3 0 0.026977902
18+
1 brain 1 brain 3 4 0.606471005 0.684149748
19+
1 brain 1 brain 4 5 0 0.004837929
20+
1 brain 1 brain 5 6 0 0.001682111
21+
1 brain 1 brain 6 7 0 0.010360786
22+
1 brain 1 brain 7 8 0 0.003618448
23+
1 brain 1 brain 8 9 0 0.005951133
24+
1 brain 1 brain 9 10 0.282212027 0.450705952
25+
2 kidney 2 kidney 0 1 0.409615071 0.439847183
26+
2 kidney 2 kidney 1 2 0.37681518 0.472425344
27+
2 kidney 2 kidney 2 3 0.388500239 0.454727931
28+
2 kidney 2 kidney 3 4 0 0.005826797
29+
2 kidney 2 kidney 4 5 0.349345069 0.477932855
30+
2 kidney 2 kidney 5 6 0 0.003111269
31+
2 kidney 2 kidney 6 7 0 0.006772178
32+
2 kidney 2 kidney 7 8 0.377362317 0.464708275
33+
2 kidney 2 kidney 8 9 0 0.002736587
34+
2 kidney 2 kidney 9 10 0 0.011546042
35+
3 liver 3 liver 0 1 0.81793805 0.861600029
36+
3 liver 3 liver 1 2 0.824442818 0.961892692
37+
3 liver 3 liver 2 3 0.843393079 0.940207424
38+
3 liver 3 liver 3 4 0 0.003852055
39+
3 liver 3 liver 4 5 0.68320794 0.870768813
40+
3 liver 3 liver 5 6 0 0.002928303
41+
3 liver 3 liver 6 7 0 0.011089963
42+
3 liver 3 liver 7 8 0 0.00640006
43+
3 liver 3 liver 8 9 0.351194537 0.400174432
44+
3 liver 3 liver 9 10 0 0.009823178
45+
4 lung 4 lung 0 1 0.67360408 0.719233216
46+
4 lung 4 lung 1 2 0.020292815 0.060983199
47+
4 lung 4 lung 2 3 0 0.006093529
48+
4 lung 4 lung 3 4 0.606648072 0.697200194
49+
4 lung 4 lung 4 5 0 0.010855019
50+
4 lung 4 lung 5 6 0.021249354 0.036261313
51+
4 lung 4 lung 6 7 0.502576095 0.674939843
52+
4 lung 4 lung 7 8 0 0.00653352
53+
4 lung 4 lung 8 9 0 0.002300978
54+
4 lung 4 lung 9 10 0 0.011655004
55+
5 rib 5 rib 0 1 0.7092422 0.752822186
56+
5 rib 5 rib 1 2 0.646812215 0.785097178
57+
5 rib 5 rib 2 3 0 0.002591421
58+
5 rib 5 rib 3 4 0 0.006823081
59+
5 rib 5 rib 4 5 0 0.009939331
60+
5 rib 5 rib 5 6 0.65803135 0.716503641
61+
5 rib 5 rib 6 7 0 0.011126162
62+
5 rib 5 rib 7 8 0 0.004534223
63+
5 rib 5 rib 8 9 0 0.002052273
64+
5 rib 5 rib 9 10 0 0.011037521

src/basetree.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -279,16 +279,16 @@ bool BaseTree::readColorMap(std::istream& in,
279279
StringVector s;
280280
boost::split(s, line, boost::is_any_of("\t "));
281281

282-
std::string sample = s[0];
282+
std::string anatomicalSite = s[0];
283283
int color = boost::lexical_cast<int>(s[1]);
284284

285-
if (colorMap.count(sample) != 0)
285+
if (colorMap.count(anatomicalSite) != 0)
286286
{
287-
std::cerr << "Error: sample '" << sample << "' is already assigned a color" << std::endl;
287+
std::cerr << "Error: anatomical site '" << anatomicalSite << "' is already assigned a color" << std::endl;
288288
return false;
289289
}
290290

291-
colorMap[sample] = color;
291+
colorMap[anatomicalSite] = color;
292292
}
293293

294294
return true;

src/basetree.h

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,13 @@ class BaseTree
5050
virtual void writeDOT(std::ostream& out) const;
5151

5252
/// Return number of anatomical sites
53-
virtual int getNrSamples() const
53+
virtual int getNrAnatomicalSites() const
5454
{
5555
return 0;
5656
}
5757

5858
/// Return anatomical site labels
59-
virtual StringSet getSamples() const
59+
virtual StringSet getAnatomicalSites() const
6060
{
6161
return StringSet();
6262
}
@@ -212,11 +212,11 @@ class BaseTree
212212
/// Return a generated color map based on the anatomical sites present in the current tree
213213
StringToIntMap generateColorMap() const
214214
{
215-
StringSet samples = getSamples();
215+
StringSet Sigma = getAnatomicalSites();
216216

217217
StringToIntMap colorMap;
218218
int idx = 0;
219-
for (const std::string& s : samples)
219+
for (const std::string& s : Sigma)
220220
{
221221
colorMap[s] = ++idx;
222222
}
@@ -237,6 +237,23 @@ class BaseTree
237237
}
238238
return res;
239239
}
240+
241+
/// Return the edge list
242+
std::string getEdgeListString() const
243+
{
244+
std::string res;
245+
for (ArcIt a(_tree); a != lemon::INVALID; ++a)
246+
{
247+
Node u = _tree.source(a);
248+
Node v = _tree.target(a);
249+
250+
if (!res.empty())
251+
res += " ; ";
252+
253+
res += "(" + _nodeToId[u] + "," + _nodeToId[v] + ")";
254+
}
255+
return res;
256+
}
240257

241258
protected:
242259
/// Tree

0 commit comments

Comments
 (0)