Skip to content

Commit 80c0ce6

Browse files
committed
Project.toml; new indexing rules from DataFrames v0.19
fix R install on Travis
1 parent 180b22e commit 80c0ce6

10 files changed

+72
-66
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@
33
*.jl.mem
44
docs/build/
55
docs/site/
6+
*Manifest.toml

.travis.yml

+5-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ os:
44
- linux
55
- osx
66
julia:
7-
- 1.0
7+
- 1.1
8+
- 1.2
9+
810
notifications:
911
email: false
1012
git:
@@ -22,7 +24,7 @@ before_install:
2224
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9; fi
2325
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo add-apt-repository -y "deb http://cran.rstudio.com/bin/linux/ubuntu $(lsb_release -s -c)/"; fi
2426
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get update -qq -y; fi
25-
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install git r-base r-base-dev r-recommended -y; fi
27+
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install --allow-unauthenticated git r-base r-base-dev r-recommended -y; fi
2628

2729
# osx
2830
# faster than using homebrew/science tap
@@ -36,7 +38,7 @@ coveralls: true
3638
jobs:
3739
include:
3840
- stage: "Documentation"
39-
julia: 1.0
41+
julia: 1.2
4042
os: linux
4143
script:
4244
- julia --project=docs/ -e 'using Pkg; Pkg.instantiate();

Project.toml

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
name = "PhyloPlots"
2+
uuid = "c0d5b6db-e3fc-52bc-a87d-1d050989ed3b"
3+
license = "MIT"
4+
version = "0.2.1"
5+
6+
[deps]
7+
ColorTypes = "3da002f7-5984-5a60-b8a6-cbb66c0b333f"
8+
Colors = "5ae59095-9a9b-59fe-a467-6f913c188581"
9+
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
10+
Gadfly = "c91e804a-d5a3-530f-b6f0-dfbca275c004"
11+
Markdown = "d6f4376e-aef5-505a-96c1-9c027394607a"
12+
PhyloNetworks = "33ad39ac-ed31-50eb-9b15-43d0656eaa72"
13+
Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"
14+
RCall = "6f49c342-dc21-5d91-9882-a32aef131414"
15+
16+
[compat]
17+
DataFrames = "≥ 0.13.0"
18+
Gadfly = "≥ 1.0.0"
19+
PhyloNetworks = "≥ 0.9.0"
20+
RCall = "≥ 0.11.0"
21+
julia = "≥ 0.7.0"
22+
23+
[extras]
24+
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
25+
26+
[targets]
27+
test = ["Test"]

REQUIRE

-7
This file was deleted.

docs/Project.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ DocumenterMarkdown = "997ab1e6-3595-5248-9280-8efb232c3433"
77
# PhyloNetworks = "33ad39ac-ed31-50eb-9b15-43d0656eaa72"
88

99
[compat]
10-
Documenter = "~0.21"
10+
Documenter = "~0.23"

src/phylonetworksPlots.jl

+11-11
Original file line numberDiff line numberDiff line change
@@ -172,16 +172,16 @@ Check data frame for node annotations:
172172
"""
173173
function checkNodeDataFrame(net::HybridNetwork, nodeLabel::DataFrame)
174174
labelnodes = size(nodeLabel,1)>0
175-
if (labelnodes && (size(nodeLabel,2)<2 || !(Missings.T(eltype(nodeLabel[1])) <: Integer)))
175+
if (labelnodes && (size(nodeLabel,2)<2 || !(Missings.T(eltypes(nodeLabel)[1]) <: Integer)))
176176
@warn "nodeLabel should have 2+ columns, the first one giving the node numbers (Integer)"
177177
labelnodes = false
178178
end
179179
if labelnodes # remove rows with no node number, check if at least one row remains
180-
nodeLabel = nodeLabel[.~ismissing.(nodeLabel[1]),:]
180+
filter!(row->!ismissing(row[1]), nodeLabel)
181181
labelnodes = size(nodeLabel,1)>0
182182
end
183183
if labelnodes
184-
tmp = setdiff(nodeLabel[1], [n.number for n in net.node])
184+
tmp = setdiff(nodeLabel[!,1], [n.number for n in net.node])
185185
if length(tmp)>0
186186
msg = "Some node numbers in the nodeLabel data frame are not found in the network:\n"
187187
for a in tmp msg *= string(" ",a); end
@@ -218,12 +218,12 @@ function prepareNodeDataFrame(net::HybridNetwork, nodeLabel::DataFrame,
218218
ndf[j,:name] = net.node[i].name
219219
ndf[j,:num] = string(net.node[i].number)
220220
if labelnodes
221-
jn = findfirst(isequal(net.node[i].number), nodeLabel[1])
221+
jn = findfirst(isequal(net.node[i].number), nodeLabel[!,1])
222222
ndf[j,:lab] = (jn===nothing || ismissing(nodeLabel[jn,2]) ? "" : # node label not in table or missing
223-
(Missings.T(eltype(nodeLabel[2])) <: AbstractFloat ?
223+
(Missings.T(eltypes(nodeLabel)[2]) <: AbstractFloat ?
224224
@sprintf("%0.3g",nodeLabel[jn,2]) : string(nodeLabel[jn,2])))
225225
end
226-
ndf[j,:lea] = net.node[i].leaf # use this later to remove #H? labels
226+
ndf[j,:lea] = net.node[i].leaf # use this later to remove H? labels
227227
ndf[j,:y] = node_y[i]
228228
ndf[j,:x] = node_x[i]
229229
j += 1
@@ -256,16 +256,16 @@ function prepareEdgeDataFrame(net::HybridNetwork, edgeLabel::DataFrame, mainTree
256256
[Symbol("len"),Symbol("gam"),Symbol("num"),Symbol("lab"),
257257
Symbol("hyb"),Symbol("min"),Symbol("x"),Symbol("y")], nrows)
258258
labeledges = size(edgeLabel,1)>0
259-
if (labeledges && (size(edgeLabel,2)<2 || !(Missings.T(eltype(edgeLabel[1])) <: Integer)))
259+
if (labeledges && (size(edgeLabel,2)<2 || !(Missings.T(eltypes(edgeLabel)[1]) <: Integer)))
260260
@warn "edgeLabel should have 2+ columns, the first one giving the edge numbers (Integer)"
261261
labeledges = false
262262
end
263263
if labeledges # remove rows with no edge number and check if at least one remains
264-
edgeLabel = edgeLabel[.~ismissing.(edgeLabel[1]),:]
264+
filter!(row->!ismissing(row[1]), edgeLabel)
265265
labeledges = size(edgeLabel,1)>0
266266
end
267267
if labeledges
268-
tmp = setdiff(edgeLabel[1], [e.number for e in net.edge])
268+
tmp = setdiff(edgeLabel[!,1], [e.number for e in net.edge])
269269
if length(tmp)>0
270270
msg = "Some edge numbers in the edgeLabel data frame are not found in the network:\n"
271271
for a in tmp msg *= string(" ",a); end
@@ -280,9 +280,9 @@ function prepareEdgeDataFrame(net::HybridNetwork, edgeLabel::DataFrame, mainTree
280280
edf[j,:gam] = (net.edge[i].gamma==-1.0 ? "" : @sprintf("%0.3g",net.edge[i].gamma))
281281
edf[j,:num] = string(net.edge[i].number)
282282
if labeledges
283-
je = findfirst(isequal(net.edge[i].number), edgeLabel[1])
283+
je = findfirst(isequal(net.edge[i].number), edgeLabel[!,1])
284284
edf[j,:lab] = (je===nothing || ismissing(edgeLabel[je,2]) ? "" : # edge label not found in table
285-
(Missings.T(eltype(edgeLabel[2])) <: AbstractFloat ?
285+
(Missings.T(eltypes(edgeLabel)[2]) <: AbstractFloat ?
286286
@sprintf("%0.3g",edgeLabel[je,2]) : string(edgeLabel[je,2])))
287287
end
288288
edf[j,:hyb] = net.edge[i].hybrid

src/plotGadfly.jl

+9-9
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Plots a network, from left to right.
1919
- minorHybridEdgeColor: color for minor hybrid edges
2020
- showEdgeNumber: if true, edges are labelled with the number used internally.
2121
- showIntNodeLabel: if true, internal nodes are labelled with their names.
22-
Useful for hybrid nodes, which do have tags like '#H1'.
22+
Useful for hybrid nodes, which do have tags like 'H1'.
2323
- edgeLabel: dataframe with two columns: the first with edge numbers, the second with labels
2424
(like bootstrap values) to annotate edges. empty by default.
2525
- nodeLabel: dataframe with two columns: the first with node numbers, the second with labels
@@ -81,45 +81,45 @@ function Gadfly.plot(net::HybridNetwork; useEdgeLength=false::Bool,
8181
ndf = prepareNodeDataFrame(net, nodeLabel, showNodeNumber,
8282
showIntNodeLabel, labelnodes, node_x, node_y)
8383
if (showTipLabel)
84-
push!(mylayers, layer(ndf[ndf[:lea], [:x,:y,:name]], y="y", x="x", label="name",
84+
push!(mylayers, layer(ndf[ndf[!,:lea], [:x,:y,:name]], y="y", x="x", label="name",
8585
Geom.label(position=:right ;hide_overlaps=true))[1])
8686
end
8787
if (showIntNodeLabel)
88-
push!(mylayers, layer(ndf[.!ndf[:lea], [:x,:y,:name]], y="y", x="x", label="name",
88+
push!(mylayers, layer(ndf[.!ndf[!,:lea], [:x,:y,:name]], y="y", x="x", label="name",
8989
Geom.label(position=:above ;hide_overlaps=true))[1])
9090
end
9191
if (showNodeNumber)
9292
push!(mylayers, layer(ndf, y="y", x="x", label="num",
9393
Geom.label(position=:dynamic ;hide_overlaps=true))[1])
9494
end
9595
if labelnodes
96-
push!(mylayers, layer(ndf[[:x,:y,:lab]], y="y", x="x", label="lab",
96+
push!(mylayers, layer(ndf[!,[:x,:y,:lab]], y="y", x="x", label="lab",
9797
Geom.label(position=:left ;hide_overlaps=false))[1])
9898
end
9999
end
100100
# data frame for edge annotations.
101101
labeledges, edf = prepareEdgeDataFrame(net, edgeLabel, mainTree,
102102
edge_xB, edge_xE, edge_yB, edge_yE)
103103
if labeledges
104-
push!(mylayers, layer(edf[[:x,:y,:lab]], y="y", x="x", label="lab",
104+
push!(mylayers, layer(edf[!,[:x,:y,:lab]], y="y", x="x", label="lab",
105105
Geom.label(position=:above ;hide_overlaps=false))[1])
106106
end
107107
if (showEdgeLength)
108-
push!(mylayers, layer(edf[[:x,:y,:len]], y="y", x="x", label="len",
108+
push!(mylayers, layer(edf[!,[:x,:y,:len]], y="y", x="x", label="len",
109109
Geom.label(position=:below ;hide_overlaps=false))[1])
110110
end
111111
if (showGamma && net.numHybrids>0)
112112
if !mainTree
113-
push!(mylayers, layer(edf[edf[:hyb] .& edf[:min], [:x,:y,:gam]], y="y", x="x",label="gam",
113+
push!(mylayers, layer(edf[edf[!,:hyb] .& edf[!,:min], [:x,:y,:gam]], y="y", x="x",label="gam",
114114
Geom.label(position=:below ;hide_overlaps=true),
115115
Theme(point_label_color=minorHybridEdgeColor))[1])
116116
end
117-
push!(mylayers, layer(edf[edf[:hyb] .& .!edf[:min],[:x,:y,:gam]], y="y", x="x",label="gam",
117+
push!(mylayers, layer(edf[edf[!,:hyb] .& .!edf[!,:min], [:x,:y,:gam]], y="y", x="x",label="gam",
118118
Geom.label(position=:below ;hide_overlaps=true),
119119
Theme(point_label_color=majorHybridEdgeColor))[1])
120120
end
121121
if (showEdgeNumber)
122-
push!(mylayers, layer(edf[[:x,:y,:num]], y="y", x="x", label="num",
122+
push!(mylayers, layer(edf[!,[:x,:y,:num]], y="y", x="x", label="num",
123123
Geom.label(position=:dynamic ;hide_overlaps=false))[1])
124124
end
125125

src/plotRCall.jl

+16-33
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ optional arguments, shared with the Gadfly-based plot function:
1717
- minorHybridEdgeColor: color for minor hybrid edges
1818
- showEdgeNumber: if true, edges are labelled with the number used internally.
1919
- showIntNodeLabel: if true, internal nodes are labelled with their names.
20-
Useful for hybrid nodes, which do have tags like '#H1'.
20+
Useful for hybrid nodes, which do have tags like 'H1'.
2121
- edgeLabel: dataframe with two columns: the first with edge numbers, the second with labels
2222
(like bootstrap values) to annotate edges. empty by default.
2323
- nodeLabel: dataframe with two columns: the first with node numbers, the second with labels
@@ -81,55 +81,38 @@ function plot(net::HybridNetwork, method::Symbol; useEdgeLength=false::Bool,
8181
segments($edge_xB, $edge_yB, $edge_xE, $edge_yE, col=$eCol)
8282
segments($node_x, $node_yB, $node_x, $node_yE, col=$edgeColor)
8383
"""
84-
@rput tipcex
8584
if showTipLabel
86-
R"""
87-
text($(node_x[leaves])+$tipOffset, $(node_y[leaves]),
88-
$(tipLabels(net)), adj=0, font=3, cex=tipcex)
89-
"""
85+
R"text"(node_x[leaves] .+ tipOffset, node_y[leaves],
86+
tipLabels(net), adj=0, font=3, cex=tipcex)
9087
end
9188
if showIntNodeLabel
92-
R"""
93-
text($(ndf[.!ndf[:lea],:x]), $(ndf[.!ndf[:lea],:y]),
94-
$(ndf[.!ndf[:lea],:name]), adj=c(.5,0))
95-
"""
89+
R"text"(ndf[.!ndf[!,:lea],:x], ndf[.!ndf[!,:lea],:y],
90+
ndf[.!ndf[!,:lea],:name], adj=[.5,0])
9691
end
9792
if showNodeNumber
98-
R"""
99-
text($(ndf[:x]), $(ndf[:y]), $(ndf[:num]), adj=1)
100-
"""
93+
R"text"(ndf[!,:x], ndf[!,:y], ndf[!,:num], adj=1)
10194
end
10295
if labelnodes
103-
R"""
104-
text($(ndf[:x]), $(ndf[:y]), $(ndf[:lab]), adj=1)
105-
"""
96+
R"text"(ndf[!,:x], ndf[!,:y], ndf[!,:lab], adj=1)
10697
end
10798
labeledges, edf = prepareEdgeDataFrame(net, edgeLabel, mainTree,
10899
edge_xB, edge_xE, edge_yB, edge_yE)
109100
if labeledges
110-
R"""
111-
text($(edf[:x]), $(edf[:y]), $(edf[:lab]), adj=c(.5,0))
112-
"""
101+
R"text"(edf[!,:x], edf[!,:y], edf[!,:lab], adj=[.5,0])
113102
end
114103
if showEdgeLength
115-
R"""
116-
text($(edf[:x]), $(edf[:y]), $(edf[:len]), adj=c(.5,1))
117-
"""
104+
R"text"(edf[!,:x], edf[!,:y], edf[!,:len], adj=[.5,1.])
118105
end
119106
if (showGamma && net.numHybrids>0)
120-
im = edf[:hyb] .& edf[:min]
121-
iM = edf[:hyb] .& .!edf[:min]
122-
R"""
123-
text($(edf[im,:x]), $(edf[im,:y]),$(edf[im,:gam]),
124-
adj=c(.5,1), col=$minorHybridEdgeColor)
125-
text($(edf[iM,:x]), $(edf[iM,:y]),$(edf[iM,:gam]),
126-
adj=c(.5,1), col=$majorHybridEdgeColor)
127-
"""
107+
im = edf[!,:hyb] .& edf[!,:min]
108+
iM = edf[!,:hyb] .& .!edf[!,:min]
109+
R"text"(edf[im,:x], edf[im,:y], edf[im,:gam],
110+
adj=[.5,1], col=minorHybridEdgeColor)
111+
R"text"(edf[iM,:x], edf[iM,:y], edf[iM,:gam],
112+
adj=[.5,1], col=majorHybridEdgeColor)
128113
end
129114
if showEdgeNumber
130-
R"""
131-
text($(edf[:x]), $(edf[:y]), $(edf[:num]), adj=c(.5,0))
132-
"""
115+
R"text"(edf[!,:x], edf[!,:y], edf[!,:num], adj=[.5,0])
133116
end
134117
return (xmin, xmax, ymin, ymax, node_x, node_y, node_yB, node_yE,
135118
edge_xB, edge_xE, edge_yB, edge_yE, ndf, edf)

test/test_phylonetworkPlots.jl

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
1., 5.,1., 4.)
2828
dat = DataFrame(node=[-5,-3,-4,5,100],bs=["90","95","99","mytip","bogus"],edge=[8,9,4,6,200]);
2929
@test_logs (:warn, "Some node numbers in the nodeLabel data frame are not found in the network:\n 100") PhyloPlots.checkNodeDataFrame(net, dat);
30-
@test_logs (:warn, "nodeLabel should have 2+ columns, the first one giving the node numbers (Integer)") PhyloPlots.checkNodeDataFrame(net, dat[2:3])
30+
@test_logs (:warn, "nodeLabel should have 2+ columns, the first one giving the node numbers (Integer)") PhyloPlots.checkNodeDataFrame(net, dat[!,2:3])
3131
dat = DataFrame(node=[-5,-3,missing,5],
3232
bs=["90","95","99","mytip"],edge=[8,9,4,6]);
3333
@test PhyloPlots.checkNodeDataFrame(net, dat) == (true,

test/test_plotRCall.jl

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
majorHybridEdgeColor="tan");
1414
dat = DataFrame(node=[-5,-10,-1],bs=["90","95","100"],edge=[11,22,26]);
1515
@test_logs (:warn, "Some node numbers in the nodeLabel data frame are not found in the network:\n -1") plot(net,:RCall, nodeLabel=dat);
16-
@test_logs plot(net,:RCall, edgeLabel=dat[[:edge,:bs]]);
16+
@test_logs plot(net,:RCall, edgeLabel=dat[!,[:edge,:bs]]);
1717

1818
# plot based on RCall and ape:
1919
tre = readTopology("(((((((1,2),3),4),5),(6,7)),(8,9)),10);");

0 commit comments

Comments
 (0)