#!/usr/bin/env julia
function main()
random_test_filenames = Dict(
"A" => joinpath(pwd(), "test1.random.ucsc.nochrm.bed"),
"B" => joinpath(pwd(), "test2.random.ucsc.nochrm.bed"),
"B_" => joinpath(pwd(), "test3.random.ucsc.bed"))
random_methods = Dict(
"coitrees" => "./coitrees",
# "coitrees --tree-vs-tree" => "./coitrees-tvt",
# "cgranges `-c`" => "./cgranges",
# "CITree" => "./CITree",
# "AIList" => "./AIList",
# "AITree" => "./AITree",
# # "bedtools" => "./bedtools",
# "NCList" => "./NCList"
)
sorted_test_filenames = Dict(
"A" => joinpath(pwd(), "test1.ucsc.nochrm.bed"),
"B" => joinpath(pwd(), "test2.ucsc.nochrm.bed"),
"B_" => joinpath(pwd(), "test3.ucsc.bed"))
sorted_methods = copy(random_methods)
sorted_methods["coitrees (`--sorted`)"] = "./coitrees-sorted"
# sorted_methods["bedtools (`-sorted`)"] = "./bedtools-sorted"
tests = [("A", "B"), ("B", "A"), ("A", "A"), ("B_", "B_")]
test_sets = [
("sorted-bench.csv", sorted_test_filenames, sorted_methods),
("random-bench.csv", random_test_filenames, random_methods)
]
# run testts
for (output_filename, test_filenames, methods) in test_sets
@show output_filename
output = open(output_filename, "w")
println(output, "method,test,time,mem")
for (method_name, method) in methods
for (test1, test2) in tests
println((method_name, test1, test2))
secs, kilos = runtest(method, test_filenames[test1], test_filenames[test2])
println(
output, method_name, ",", test1, "vs", test2, ",",
round(secs, digits=1), ",", round(kilos/1000, digits=1))
flush(output)
end
end
end
end
function runtest(method, filename1, filename2)
time_output_path, time_io = mktemp()
run(pipeline(
`time -f "%e,%M" -o $(time_output_path) $(method) $(filename1) $(filename2)`,
stdout=open("/dev/null", "w")))
time_str = String(read(time_io))
return parse.(Float64, split(time_str, ','))
end
main()