jSplits – a Java Framework for Phylogenetic Trees and Networks

Arya MirΛογισμικό & κατασκευή λογ/κού

3 Απρ 2012 (πριν από 2 χρόνια και 4 μήνες)

886 εμφανίσεις

Evolutionary relationships are usually represented by phylogenetic trees But, real data contain different and/or conflicting signals, and thus do not always clearly support a unique tree Hence, in some cases a phylogenetic network may be more appropriate


jSplits
jSplits ––a Java Framework
a Java Framework
for Phylogenetic Trees and
for Phylogenetic Trees and
Networks
Networks
Tübingen, 4.7.2003
Tübingen, 4.7.2003
Copyright (c) 2008 Daniel Huson.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts. A copy of the license can be found at http://www.gnu.org/copyleft/fdl.html
Trees vs networks
Trees vs networks

Evolutionary relationships are usually
Evolutionary relationships are usually
represented by phylogenetic trees
represented by phylogenetic trees

But, real data contain different and/or
But, real data contain different and/or


But, real data contain different and/or
But, real data contain different and/or
conflicting signals, and thus do not
conflicting signals, and thus do not
always clearly support a unique tree
always clearly support a unique tree

Hence, in some cases a phylogenetic
Hence, in some cases a phylogenetic
network may be more appropriate…
network may be more appropriate…


Trees vs networks
Trees vs networks
Computed using
Computed using
split decomposition
split decomposition
Computed using
Computed using
Neighbor
Neighbor--Joining
Joining

Neisseria phylogeny (Eddie Holmes, 1999)
Neisseria phylogeny (Eddie Holmes, 1999)


Trees and splits
Trees and splits

Edge
Edge
ee
corresponds to split {t
corresponds to split {t
11
,t,t
22
,t,t
66
,t,t
77
,t,t
88
} vs {t
} vs {t
33
,t,t
44
,t,t
55
}}


Networks and splits
Networks and splits

Cut
Cut--set of parallel edges defines split {
set of parallel edges defines split {
A,B
A,B
} vs rest
} vs rest


Splits and graphs
Splits and graphs
Any given system
Any given system

of splits can be represented
of splits can be represented
by a
by a
splits graph G
splits graph G
. Note that:
. Note that:

G is a tree iff
G is a tree iff

is compatible
is compatible
(e.g. Neighbor
(e.g. Neighbor--Joining)
Joining)

G is outer
G is outer
--
planar iff
planar iff

is circular
is circular


G is outer
G is outer
--
planar iff
planar iff

is circular
is circular
(e.g. Neighbor
(e.g. Neighbor--Net, Bryant & Moulton 2002)
Net, Bryant & Moulton 2002)

G is usually planar or only mildy non
G is usually planar or only mildy non--planar iff
planar iff

is weakly compatible
is weakly compatible
(e.g. Split Decomposition)
(e.g. Split Decomposition)

G is always subgraph of n
G is always subgraph of n--dim. hypercube
dim. hypercube
(e.g. recoding of sequences, spectral analysis, med
ian networks,
(e.g. recoding of sequences, spectral analysis, med
ian networks,
consensus networks)
consensus networks)
(Theory of splits worked out by Bandelt and Dress 1
992)
(Theory of splits worked out by Bandelt and Dress 1
992)


SplitsTree 3.2
SplitsTree 3.2

Implements split
Implements split
decomposition and
decomposition and
related methods
related methods

First version developed
First version developed


First version developed
First version developed
with Rainer Wetzel in
with Rainer Wetzel in
1995
1995

Current version 3.2 in
Current version 3.2 in
C++ using Tcl
C++ using Tcl--TkTk

Runs under Linux, Unix,
Runs under Linux, Unix,
Windows and MacOS
Windows and MacOS


Design criteria for jSplits
Design criteria for jSplits
(SplitsTree4)
(SplitsTree4)

Must run on any machine with minimal
Must run on any machine with minimal
installation requirements
installation requirements

GUI for interactive use, command
GUI for interactive use, command
--
line for
line for


GUI for interactive use, command
GUI for interactive use, command
--
line for
line for
pipelines
pipelines

Open system, decentralized plug
Open system, decentralized plug--in concept
in concept

Based on splits, also including quartets etc
Based on splits, also including quartets etc

Use Nexus file format
Use Nexus file format

Open source
Open source


Data flow in jSplits
Data flow in jSplits
Taxa
Taxa
Characters
Characters
Unaligned
Unaligned
Bootstrap
Bootstrap
Assumptions
Assumptions
Taxa are
Taxa are
represented e.g. by
represented e.g. by
aligned sequences
aligned sequences
Assumptions
Assumptions
Bootstrap
Bootstrap

Characters
Characters
Splits graph
Splits graph
Splits
Splits
Quartets
Quartets
Distances
Distances
Analysis
Analysis
Bootstrap
Bootstrap
Assumptions
Assumptions
Transform
Transform
characters into
characters into
distances e.g. using
distances e.g. using
Hamming distances
Hamming distances
Transform
Transform
distances into splits
distances into splits
e.g. using Neighbor
e.g. using Neighbor--
net
net
Transform splits in
Transform splits in
to graph e.g. using
to graph e.g. using
“circular” or “convex
“circular” or “convex
hull” algorithm
hull” algorithm
Trees
Trees
Every connector
Every connector
represents a data
represents a data
transformation
transformation
(plug
(plug--in)in)
Assumptions
Assumptions
Bootstrap
Bootstrap
Analysis
Analysis


Writing a new transformation
Writing a new transformation
E.g., a new tree
E.g., a new tree--building method “GreatTree” is pro
vided
building method “GreatTree” is provided
to jSplits as follows:
to jSplits as follows:



















BioNJ on bacterial genomes
BioNJ on bacterial genomes



NN--Net on bacterial genomes
Net on bacterial genomes



Summary
Summary

jSplits is an open frame
jSplits is an open frame--work for
work for
phylogenetic analysis
phylogenetic analysis

Extensibility based on plugin design
Extensibility based on plugin design

Built on splits, incorperates both tree and
Built on splits, incorperates both tree and
network methods
network methods


Built on splits, incorperates both tree and
Built on splits, incorperates both tree and
network methods
network methods

Provides all popular distance
Provides all popular distance--based tree
based tree
building algorithms
building algorithms

Provides network methods such as split
Provides network methods such as split
decomposition, Neighbor
decomposition, Neighbor--net and median
net and median
networks
networks


Credits
Credits

Authors: David Bryant and D.H.
Authors: David Bryant and D.H.

Additional programmers: Markus Franz
Additional programmers: Markus Franz


Additional programmers: Markus Franz
Additional programmers: Markus Franz
and Michael Schröder
and Michael Schröder

Thanks to: Yuhui Wang
Thanks to: Yuhui Wang

