Skip to content

Commit 8526406

Browse files
Support unpacking .xz data files
Automate the unpacking of LZMA compressed data files for tests (this needs "xzcat" to be present on the system). Ensure files are closed on reading events.
1 parent 0c4b2e0 commit 8526406

File tree

4 files changed

+26
-3
lines changed

4 files changed

+26
-3
lines changed

src/Utils.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ function read_final_state_particles(fname; maxevents = -1, skipevents = 0)
2020
push!(events, input_particles)
2121
ipart += 1
2222
end
23+
close(f)
2324

2425
@info "Total Events: $(length(events))"
2526
@debug events
@@ -46,6 +47,7 @@ function read_final_state_particles_lv(fname; maxevents = -1, skipevents = 0)
4647
push!(events, input_particles)
4748
ipart += 1
4849
end
50+
close(f)
4951

5052
@info "Total Events: $(length(events))"
5153
@debug events

test/data/events.hepmc3.gz

-7.32 MB
Binary file not shown.

test/data/events.hepmc3.xz

5.85 MB
Binary file not shown.

test/runtests.jl

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,24 @@ using JSON
66
using LorentzVectorHEP
77
using Logging
88

9+
const events_file = joinpath(@__DIR__, "data", "events.hepmc3")
10+
11+
"""Decompress data file, if necessary"""
12+
function unpack_events(file)
13+
# File already there?
14+
if isfile(file)
15+
return true
16+
end
17+
# LZMA source?
18+
file_compressed = joinpath(dirname(file), basename(file)*".xz")
19+
if isfile(file_compressed)
20+
@debug "Unpacking $(file_compressed)"
21+
run(pipeline(`xzcat $file_compressed`, stdout=file))
22+
return true
23+
end
24+
false
25+
end
26+
927
"""Read JSON file with fastjet jets in it"""
1028
function read_fastjet_outputs(fname)
1129
f = open(fname)
@@ -31,6 +49,9 @@ function sort_jets!(jet_array::Vector{LorentzVectorCyl})
3149
end
3250

3351
function main()
52+
# If necessary, unzip the events data file
53+
unpack_events(events_file)
54+
3455
# Read our fastjet outputs (we read for anti-kt, cambridge/achen, inclusive-kt)
3556
algorithms = Dict(-1 => "Anti-kt",
3657
0 => "Cambridge/Achen",
@@ -76,7 +97,7 @@ function do_test_compare_to_fastjet(strategy::JetRecoStrategy.Strategy, fastjet_
7697

7798
# Now run our jet reconstruction...
7899
# From PseudoJets
79-
events::Vector{Vector{PseudoJet}} = read_final_state_particles(joinpath(@__DIR__, "data", "events.hepmc3"))
100+
events::Vector{Vector{PseudoJet}} = read_final_state_particles(events_file)
80101
jet_collection = FinalJets[]
81102
for (ievt, event) in enumerate(events)
82103
finaljets = final_jets(inclusive_jets(jet_reconstruction(event, R = distance, p = power), ptmin))
@@ -127,7 +148,7 @@ function do_test_compare_types(strategy::JetRecoStrategy.Strategy;
127148

128149
# Now run our jet reconstruction...
129150
# From PseudoJets
130-
events::Vector{Vector{PseudoJet}} = read_final_state_particles(joinpath(@__DIR__, "data", "events.hepmc3"))
151+
events::Vector{Vector{PseudoJet}} = read_final_state_particles(events_file)
131152
jet_collection = FinalJets[]
132153
for (ievt, event) in enumerate(events)
133154
finaljets = final_jets(inclusive_jets(jet_reconstruction(event, R = distance, p = power), ptmin))
@@ -136,7 +157,7 @@ function do_test_compare_types(strategy::JetRecoStrategy.Strategy;
136157
end
137158

138159
# From LorentzVector
139-
events_lv::Vector{Vector{LorentzVector}} = read_final_state_particles_lv(joinpath(@__DIR__, "data", "events.hepmc3"))
160+
events_lv::Vector{Vector{LorentzVector}} = read_final_state_particles_lv(events_file)
140161
jet_collection_lv = FinalJets[]
141162
for (ievt, event) in enumerate(events_lv)
142163
finaljets = final_jets(inclusive_jets(jet_reconstruction(event, R = distance, p = power), ptmin))

0 commit comments

Comments
 (0)