-
Notifications
You must be signed in to change notification settings - Fork 0
/
ims_cp.jl
98 lines (93 loc) · 5 KB
/
ims_cp.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
using LightXML
using JLD
using HDF5
"""
Usage:
julia ims_cp.jl imaris_root_dir exp_folder_name imaris_creation_name destination
Version Commit
0.1 first version
TODO: combine scene and image file
"""
"copy and rename imaris batch result from imaris database with Folder and Creation name"
function ims_cp(ims_root::String, ims_array::String, ims_creation::String, output::String)
id2name = Dict()
id2path= Dict()
# load ims TreeData.xml
TREEDATE = parse_file("$ims_root/TreeData.xml")
# enter root node
xroot = root(TREEDATE)
# local -> mRNA -> ims_array
for folder in child_elements(xroot)
if (name(folder) =="Folder") && (attribute(folder, "name") == "local")
for folder2 in child_elements(folder)
if (name(folder2) == "Folder") && (attribute(folder2, "name") == "mRNA")
for folder3 in child_elements(folder2)
# enter single experiment folder
#println(name(folder3)," ", attribute(folder3, "name"))
if (name(folder3) == "Folder") && (attribute(folder3, "name") == ims_array)
# enter "Image" node for each folder
for e in child_elements( folder3 )
# travel all image
if name(e) == "Image"
image_name = attribute(e, "name")
image_id = attribute(e, "id")
image_path = replace( attribute(e, "path"),
"file:///C%3A/Imaris_Data_qblab/"=>"" )
push!(id2name, image_id=>image_name)
push!(id2path, image_id=>image_path)
elseif name(e) == "CreationParameter"
# get CreationParameter id
creation_parameters = attribute(e, "CreationParameters")
open("$output/$ims_creation.txt", "w") do io
for line in split(creation_parameters, "> <")
println(io, line)
end
end
end
end
# cp batch result
for e in child_elements( folder3 )
if (name(e) == "BatchRun") && (attribute(e, "name") == "$ims_array $ims_creation")
#println(e["batchrunresults"]["result"])
batchrunresults = e["batchrunresults"][1]["result"]
for result in batchrunresults
if attribute(result, "status") == "FINISHED" && !isempty(attribute(result, "output"))
id = attribute(result, "input")
outputpath = attribute(result, "outputpath")
src_scene = replace(outputpath, "file:/"=>"$ims_root")
src_ims = "$ims_root/$(id2path[id])"
out_ims = "$output/$(id2name[id]).ims";
print(id2name[id], " ")
cp(src_ims, out_ims, force=true)
ims_f = h5open(out_ims, "r+")
scene_f = h5open(src_scene, "r")
if haskey(ims_f, "Scene")
HDF5.delete_object(ims_f, "Scene")
end
if haskey(ims_f, "Scene8")
HDF5.delete_object(ims_f, "Scene8")
end
HDF5.copy_object(scene_f, "Scene", ims_f, "Scene")
HDF5.copy_object(scene_f, "Scene8", ims_f, "Scene8")
close(ims_f)
close(scene_f)
end
end
else
#println("$ims_creation no found!")
end
end
else
#println("$ims_array no found!")
end
end
end
end
end
end
end
if length(ARGS) != 4
println("Usage: julia ims_cp.jl imaris_root_dir exp_folder_name imaris_creation_name destination")
else
ims_cp(ARGS[1], ARGS[2], ARGS[3], ARGS[4])
end