# This DSC can be executed from: https://github.com/gaow/dr-tree/tree/master/analysis
# To run the entire benchmark:
# dsc exec benchmark.dsc -j8
# To run part of the benchmark, here are a few highlights
# dsc exec benchmark.dsc -j8 -s "SimTree * SimBM * SklearnDR * PlotPY"
# dsc exec benchmark.dsc -j8 -s "SimTree * SimBM * MST * PlotR[1]"
# dsc exec benchmark.dsc -j8 -s "SimTree * SimBM * (RDR[2], RDR[3]) * PlotR[2]"
# dsc exec benchmark.dsc -j8 -s "SimTree * SimBM * (RDR[4] * PlotR[3], RDR[5] * PlotR[4])"
# dsc exec benchmark.dsc -j8 -s "ToyTreeBM * (RDR[4] * PlotR[3], RDR[5] * PlotR[4])"
# To run the benchmark without calculating the population covariance:
# dsc exec benchmark.dsc -j8 -s "(SimTree * PlotTree * SimBM, ToyTreeBM) * (SklearnDR * PlotPY, MST * PlotR[1], (RDR[2], RDR[3]) * PlotR[2], (RDR[1], RDR[4], RDR[5], RDR[6]) * PlotR[3], RDR[7] * PlotR[4], (RDR[8], RDR[9]) * PlotR[5], (RDR[1], RDR[2], RDR[3], RDR[4], RDR[5], RDR[6], RDR[7]) * MST * PlotR[1])"
###
# Simulate bifurcated tree structure with data points in between nodes
###
SimTree:
exec: BiTree.R
seed: 31415
params:
n: 2, 8
t: 30
m: 100
unify_branch: 1
return: tree = R(res$data),
nodes = R(res$all_nodes),
X_labels = R(res$labels)
###
# Plot tree structure
###
PlotTree:
exec: TreePlot.R
params:
tree: $tree
treeplot: File(pdf)
return: treeplot
###
# Calculate covariance matrix for the tree structure
###
CalcVcv:
exec: VcvTree.R
seed: 31415
params:
tree: $tree
positions: $nodes
return: CX
###
# Generate samples from covariance
###
Vcv2BM:
exec: VcvBM.R
seed: 31415
params:
CX: $CX
X_labels: $X_labels
mu: 0
sigma: 0.1
k: 100
scalar: 1
type_I_noise: 0, Asis(sigma)
type_II_noise: 0, Asis(k * 2)
return: X
###
# Simulate BM directly from tree structure
###
SimBM:
exec: IntermBM.R
seed: 31415
params:
tree: $tree
all_nodes: $nodes
Nsim: 100
diffusion: 1
precision: 1000
type_I_noise: 0, Asis(diffusion)
type_II_noise: 0, Asis(Nsim * 2)
return: X
###
# Simulate simple tree structure and sample Brownian motion on it
# - Linear edge
# - Y-shaped tree
###
ToyTreeBM:
exec: LinearBM.R, YShapedBM.R
seed: 31415
params:
m: 100
t_scale: 1
Nsim: 100
diffusion: 1
precision: 1000
type_I_noise: 0, Asis(sqrt(diffusion/precision))
type_II_noise: 0, Asis(Nsim * 2)
return: X
###
# Apply different methods from sklearn package
# - global methods, local methods (manifold learning)
###
SklearnDR:
exec: Combo(manifold.py, $(manifold_methods))
seed: 31415
params:
data: $X
label: (I10, I12, I11, I1, I2, I13, I3, I4, I14, I5, I6, I15, I7, I8)
n_comp: 2
n_neighbors: 50
return: projection, properties
###
# Generate 2D plots for Python based methods
###
PlotPY:
exec: PlotDR.py
params:
data: $projection
properties: $properties
vizplot: File(pdf)
return: vizplot
###
# Apply methods in R packages:
# - minimimum spanning tree via Ape package
# - sparse PCA via PMA package
# - sparse factor analysis via sfa wrapped in R
###
MST:
exec: ApeMST.R
seed: 31415
params:
X: $X
label: (I10, I12, I11, I1, I2, I13, I3, I4, I14, I5, I6, I15, I7, I8)
return: projection, properties, X
RDR(MST):
exec: FlashK.R, PmaPCA.R, PCA.R, SFA.R, PMD.R, PosPMD.R, CountCluster.R, NeighborJoining.R, FastME.R
params:
exec[2]:
sumabsv: 1, Asis(NULL)
K: 5
orth: 1, 0
exec[4]:
K: Asis(NULL), 9
model: -mn
rng: 31415
exec[1,5,6]:
K: Asis(NULL), 9
exec[7]:
K: Asis(NULL), 9
tol: 1
###
# Generate 2D plots for R based methods
###
PlotR:
exec: PlotMST.R, PlotPCA.R, PlotFA.R, PlotCountCluster.R, PlotApeTree.R
seed: 31415
params:
X: $projection
properties: $properties
vizplot: File(pdf)
exec[1]:
igraph_layout: $(igraph_layouts)
return: vizplot
DSC:
run: ((SimTree * PlotTree) * (CalcVcv * Vcv2BM, SimBM), ToyTreeBM) *
(SklearnDR * PlotPY,
MST * PlotR[1],
(RDR[2], RDR[3]) * PlotR[2],
(RDR[1], RDR[4], RDR[5], RDR[6]) * PlotR[3],
RDR[7] * PlotR[4],
(RDR[8], RDR[9]) * PlotR[5],
(RDR[1], RDR[2], RDR[3], RDR[4], RDR[5], RDR[6], RDR[7]) * MST * PlotR[1])
R_libs: liamrevell/phytools, ape, adephylo, MASS, igraph, PMA, ggplot2,
reshape2, maptpx, kkdey/CountClust, stephens999/ashr (1.0.0+)
exec_path: output/src/simulate, output/src/analyze, output/src/plot
lib_path: output/src/simulate, output/src/analyze, output/src
output: output/20160628
parameters:
manifold_methods: LLE_standard, LLE_ltsa, LLE_hessian, LLE_modified,
isomap, mds, spectral_embedding, t_sne, pca
igraph_layouts: layout_as_star, layout_as_tree, layout_in_circle,
layout_nicely, layout_on_grid, layout_on_sphere, layout_randomly,
layout_with_dh, layout_with_drl, layout_with_fr, layout_with_gem,
layout_with_graphopt, layout_with_kk, layout_with_lgl,
layout_with_mds
# unusable: layout_as_bipartite, layout_with_sugiyama