https://github.com/QBioLab/CountmRNA.jl
Tip revision: 27fa41066bf09a3c1ca00fd333f72755e481b16f authored by H.F on 13 April 2021, 10:57:05 UTC
upload running script
upload running script
Tip revision: 27fa410
ims_cp.jl
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