Skip to content

Commit 2bc1d48

Browse files
committed
updated saturation function
1 parent 4b3b41b commit 2bc1d48

File tree

6 files changed

+85
-72
lines changed

6 files changed

+85
-72
lines changed

docs/change_log/index.rst

+3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ Change log
88

99
Major changes to PhyKIT are summarized here.
1010

11+
**1.19.9**:
12+
Saturation function now also reports the absolute value of 1-saturation. Lower values are indicative of less saturation.
13+
1114
**1.19.4**:
1215
Saturation function forces y-intercept to be zero when calculating slope
1316

docs/usage/index.rst

+5
Original file line numberDiff line numberDiff line change
@@ -1382,6 +1382,11 @@ that the distances between taxa are underestimated.
13821382
Data with no saturation will have a value of 1. The closer
13831383
the value is to 1, the less saturated the data.
13841384

1385+
This function outputs two values (as of v1.19.9). The first
1386+
value is the saturation value and the second column is the absolute
1387+
value of saturation minus 1. Thus, lower values in the second column
1388+
are indicative of values closer to one and, thus, less saturation.
1389+
13851390
Saturation is calculated following Philippe et al., PLoS
13861391
Biology (2011), doi: 10.1371/journal.pbio.1000602.
13871392

phykit/phykit.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -2453,7 +2453,12 @@ def saturation(argv):
24532453
Data with no saturation will have a value of 1. The closer
24542454
the value is to 1, the less saturated the data.
24552455
2456-
Saturation is calculated following Philippe et al., PLoS
2456+
This function outputs two values (as of v1.19.9). The first
2457+
value is the saturation value and the second column is the absolute
2458+
value of saturation minus 1. Thus, lower values in the second column
2459+
are indicative of values closer to one and, thus, less saturation.
2460+
2461+
Saturation is calculated following Philippe et al., PLoS
24572462
Biology (2011), doi: 10.1371/journal.pbio.1000602.
24582463
24592464
Aliases:

phykit/services/tree/saturation.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,9 @@ def print_res(
129129
combos, uncorrected_distances, patristic_distances
130130
):
131131
print(
132-
f"{combo[0]}-{combo[1]}\t{round(dist,4)}\t{round(patristic_distance, 4)}"
132+
f"{combo[0]}\t{combo[1]}\t{round(dist,4)}\t{round(patristic_distance, 4)}"
133133
)
134134
else:
135-
print(round(slope, 4))
135+
print(f"{round(slope, 4)}\t{abs(round(1-slope, 4))}")
136136
except BrokenPipeError:
137137
pass

phykit/version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "1.19.8"
1+
__version__ = "1.19.9"

tests/integration/tree/test_saturation_integration.py

+68-68
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
class TestSaturation(object):
1515
@patch("builtins.print")
1616
def test_saturation(self, mocked_print):
17-
expected_result = 0.4919
17+
expected_result = "0.4919\t0.5081"
1818
testargs = [
1919
"phykit",
2020
"saturation",
@@ -29,7 +29,7 @@ def test_saturation(self, mocked_print):
2929

3030
@patch("builtins.print")
3131
def test_saturation_alias(self, mocked_print):
32-
expected_result = 0.4919
32+
expected_result = "0.4919\t0.5081"
3333
testargs = [
3434
"phykit",
3535
"sat",
@@ -90,70 +90,70 @@ def test_saturation_verbose(self, mocked_print):
9090
with patch.object(sys, "argv", testargs):
9191
Phykit()
9292
assert mocked_print.mock_calls == [
93-
call("Kpol-Kpha\t0.3864\t0.6176"),
94-
call("Kpol-Snag\t0.4346\t0.7482"),
95-
call("Kpol-Suva\t0.4052\t0.6945"),
96-
call("Kpol-Skud\t0.4094\t0.7341"),
97-
call("Kpol-Smik\t0.3843\t0.7734"),
98-
call("Kpol-Scer\t0.3895\t0.7634"),
99-
call("Kpol-Kbla\t0.401\t0.7287"),
100-
call("Kpol-Kafr\t0.4304\t0.7509"),
101-
call("Kpol-Sdai\t0.4084\t0.7297"),
102-
call("Kpol-Scas\t0.4178\t0.7958"),
103-
call("Kpol-Cgla\t0.4021\t0.653"),
104-
call("Kpha-Snag\t0.4607\t0.8254"),
105-
call("Kpha-Suva\t0.4576\t0.7717"),
106-
call("Kpha-Skud\t0.4743\t0.8113"),
107-
call("Kpha-Smik\t0.4534\t0.8505"),
108-
call("Kpha-Scer\t0.4555\t0.8406"),
109-
call("Kpha-Kbla\t0.4565\t0.9228"),
110-
call("Kpha-Kafr\t0.4419\t0.945"),
111-
call("Kpha-Sdai\t0.4576\t0.9238"),
112-
call("Kpha-Scas\t0.4618\t0.9899"),
113-
call("Kpha-Cgla\t0.4262\t0.8472"),
114-
call("Snag-Suva\t0.4482\t0.7281"),
115-
call("Snag-Skud\t0.4492\t0.7678"),
116-
call("Snag-Smik\t0.4461\t0.807"),
117-
call("Snag-Scer\t0.445\t0.797"),
118-
call("Snag-Kbla\t0.4785\t1.0535"),
119-
call("Snag-Kafr\t0.4461\t1.0757"),
120-
call("Snag-Sdai\t0.4775\t1.0544"),
121-
call("Snag-Scas\t0.5016\t1.1206"),
122-
call("Snag-Cgla\t0.4869\t0.9778"),
123-
call("Suva-Skud\t0.1895\t0.229"),
124-
call("Suva-Smik\t0.2031\t0.2682"),
125-
call("Suva-Scer\t0.2042\t0.2583"),
126-
call("Suva-Kbla\t0.4639\t0.9997"),
127-
call("Suva-Kafr\t0.4838\t1.0219"),
128-
call("Suva-Sdai\t0.4691\t1.0007"),
129-
call("Suva-Scas\t0.4838\t1.0668"),
130-
call("Suva-Cgla\t0.4293\t0.9241"),
131-
call("Skud-Smik\t0.1801\t0.2171"),
132-
call("Skud-Scer\t0.1675\t0.2071"),
133-
call("Skud-Kbla\t0.4817\t1.0394"),
134-
call("Skud-Kafr\t0.4712\t1.0616"),
135-
call("Skud-Sdai\t0.4911\t1.0403"),
136-
call("Skud-Scas\t0.4995\t1.1065"),
137-
call("Skud-Cgla\t0.4398\t0.9637"),
138-
call("Smik-Scer\t0.1686\t0.1998"),
139-
call("Smik-Kbla\t0.4618\t1.0786"),
140-
call("Smik-Kafr\t0.4775\t1.1008"),
141-
call("Smik-Sdai\t0.466\t1.0796"),
142-
call("Smik-Scas\t0.4743\t1.1457"),
143-
call("Smik-Cgla\t0.4471\t1.003"),
144-
call("Scer-Kbla\t0.4628\t1.0686"),
145-
call("Scer-Kafr\t0.4838\t1.0908"),
146-
call("Scer-Sdai\t0.4702\t1.0696"),
147-
call("Scer-Scas\t0.4764\t1.1357"),
148-
call("Scer-Cgla\t0.4492\t0.993"),
149-
call("Kbla-Kafr\t0.4314\t0.67"),
150-
call("Kbla-Sdai\t0.4387\t0.8756"),
151-
call("Kbla-Scas\t0.4607\t0.9418"),
152-
call("Kbla-Cgla\t0.4492\t0.799"),
153-
call("Kafr-Sdai\t0.466\t0.8978"),
154-
call("Kafr-Scas\t0.4848\t0.964"),
155-
call("Kafr-Cgla\t0.445\t0.8212"),
156-
call("Sdai-Scas\t0.3644\t0.5357"),
157-
call("Sdai-Cgla\t0.4325\t0.7045"),
158-
call("Scas-Cgla\t0.4482\t0.7706"),
93+
call("Kpol\tKpha\t0.3864\t0.6176"),
94+
call("Kpol\tSnag\t0.4346\t0.7482"),
95+
call("Kpol\tSuva\t0.4052\t0.6945"),
96+
call("Kpol\tSkud\t0.4094\t0.7341"),
97+
call("Kpol\tSmik\t0.3843\t0.7734"),
98+
call("Kpol\tScer\t0.3895\t0.7634"),
99+
call("Kpol\tKbla\t0.401\t0.7287"),
100+
call("Kpol\tKafr\t0.4304\t0.7509"),
101+
call("Kpol\tSdai\t0.4084\t0.7297"),
102+
call("Kpol\tScas\t0.4178\t0.7958"),
103+
call("Kpol\tCgla\t0.4021\t0.653"),
104+
call("Kpha\tSnag\t0.4607\t0.8254"),
105+
call("Kpha\tSuva\t0.4576\t0.7717"),
106+
call("Kpha\tSkud\t0.4743\t0.8113"),
107+
call("Kpha\tSmik\t0.4534\t0.8505"),
108+
call("Kpha\tScer\t0.4555\t0.8406"),
109+
call("Kpha\tKbla\t0.4565\t0.9228"),
110+
call("Kpha\tKafr\t0.4419\t0.945"),
111+
call("Kpha\tSdai\t0.4576\t0.9238"),
112+
call("Kpha\tScas\t0.4618\t0.9899"),
113+
call("Kpha\tCgla\t0.4262\t0.8472"),
114+
call("Snag\tSuva\t0.4482\t0.7281"),
115+
call("Snag\tSkud\t0.4492\t0.7678"),
116+
call("Snag\tSmik\t0.4461\t0.807"),
117+
call("Snag\tScer\t0.445\t0.797"),
118+
call("Snag\tKbla\t0.4785\t1.0535"),
119+
call("Snag\tKafr\t0.4461\t1.0757"),
120+
call("Snag\tSdai\t0.4775\t1.0544"),
121+
call("Snag\tScas\t0.5016\t1.1206"),
122+
call("Snag\tCgla\t0.4869\t0.9778"),
123+
call("Suva\tSkud\t0.1895\t0.229"),
124+
call("Suva\tSmik\t0.2031\t0.2682"),
125+
call("Suva\tScer\t0.2042\t0.2583"),
126+
call("Suva\tKbla\t0.4639\t0.9997"),
127+
call("Suva\tKafr\t0.4838\t1.0219"),
128+
call("Suva\tSdai\t0.4691\t1.0007"),
129+
call("Suva\tScas\t0.4838\t1.0668"),
130+
call("Suva\tCgla\t0.4293\t0.9241"),
131+
call("Skud\tSmik\t0.1801\t0.2171"),
132+
call("Skud\tScer\t0.1675\t0.2071"),
133+
call("Skud\tKbla\t0.4817\t1.0394"),
134+
call("Skud\tKafr\t0.4712\t1.0616"),
135+
call("Skud\tSdai\t0.4911\t1.0403"),
136+
call("Skud\tScas\t0.4995\t1.1065"),
137+
call("Skud\tCgla\t0.4398\t0.9637"),
138+
call("Smik\tScer\t0.1686\t0.1998"),
139+
call("Smik\tKbla\t0.4618\t1.0786"),
140+
call("Smik\tKafr\t0.4775\t1.1008"),
141+
call("Smik\tSdai\t0.466\t1.0796"),
142+
call("Smik\tScas\t0.4743\t1.1457"),
143+
call("Smik\tCgla\t0.4471\t1.003"),
144+
call("Scer\tKbla\t0.4628\t1.0686"),
145+
call("Scer\tKafr\t0.4838\t1.0908"),
146+
call("Scer\tSdai\t0.4702\t1.0696"),
147+
call("Scer\tScas\t0.4764\t1.1357"),
148+
call("Scer\tCgla\t0.4492\t0.993"),
149+
call("Kbla\tKafr\t0.4314\t0.67"),
150+
call("Kbla\tSdai\t0.4387\t0.8756"),
151+
call("Kbla\tScas\t0.4607\t0.9418"),
152+
call("Kbla\tCgla\t0.4492\t0.799"),
153+
call("Kafr\tSdai\t0.466\t0.8978"),
154+
call("Kafr\tScas\t0.4848\t0.964"),
155+
call("Kafr\tCgla\t0.445\t0.8212"),
156+
call("Sdai\tScas\t0.3644\t0.5357"),
157+
call("Sdai\tCgla\t0.4325\t0.7045"),
158+
call("Scas\tCgla\t0.4482\t0.7706"),
159159
]

0 commit comments

Comments
 (0)