Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
K
km3io
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
km3py
km3io
Commits
9b2c4b45
Commit
9b2c4b45
authored
4 years ago
by
Tamas Gal
Browse files
Options
Downloads
Patches
Plain Diff
Rename special to nested (branches)
parent
af5e8d12
No related branches found
Branches containing commit
No related tags found
Tags containing commit
1 merge request
!47
Resolve "uproot4 integration"
Pipeline
#16330
failed
4 years ago
Stage: test
Stage: coverage
Stage: doc
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
km3io/offline.py
+2
-2
2 additions, 2 deletions
km3io/offline.py
km3io/rootio.py
+30
-30
30 additions, 30 deletions
km3io/rootio.py
with
32 additions
and
32 deletions
km3io/offline.py
+
2
−
2
View file @
9b2c4b45
...
...
@@ -24,7 +24,7 @@ class OfflineReader(EventReader):
"
usr
"
:
"
AAObject/usr
"
,
"
usr_names
"
:
"
AAObject/usr_names
"
,
}
special
_branches
=
{
nested
_branches
=
{
"
hits
"
:
{
"
id
"
:
"
hits.id
"
,
"
channel_id
"
:
"
hits.channel_id
"
,
...
...
@@ -78,7 +78,7 @@ class OfflineReader(EventReader):
"
usr_names
"
:
"
mc_trks.usr_names
"
,
# TODO: trouble with uproot4
},
}
special
_aliases
=
{
nested
_aliases
=
{
"
tracks
"
:
"
trks
"
,
"
mc_tracks
"
:
"
mc_trks
"
,
}
...
...
This diff is collapsed.
Click to expand it.
km3io/rootio.py
+
30
−
30
View file @
9b2c4b45
...
...
@@ -16,10 +16,10 @@ class EventReader:
event_path
=
None
item_name
=
"
Event
"
skip_keys
=
[]
aliases
=
{}
special
_branches
=
{}
special
_aliases
=
{}
skip_keys
=
[]
# ignore these subbranches, even if they exist
aliases
=
{}
# top level aliases -> {fromkey: tokey}
nested
_branches
=
{}
nested
_aliases
=
{}
def
__init__
(
self
,
...
...
@@ -30,7 +30,7 @@ class EventReader:
aliases
=
None
,
event_ctor
=
None
,
):
"""
OfflineReader class is an offline ROOT file wrapper
"""
EventReader base class
Parameters
----------
...
...
@@ -88,8 +88,8 @@ class EventReader:
set
(
list
(
self
.
keys
())
+
list
(
self
.
aliases
)
+
list
(
self
.
special
_branches
)
+
list
(
self
.
special
_aliases
)
+
list
(
self
.
nested
_branches
)
+
list
(
self
.
nested
_aliases
)
),
)
...
...
@@ -97,9 +97,9 @@ class EventReader:
skip_keys
=
set
(
self
.
skip_keys
)
toplevel_keys
=
set
(
k
.
split
(
"
/
"
)[
0
]
for
k
in
self
.
_fobj
[
self
.
event_path
].
keys
())
keys
=
(
toplevel_keys
-
skip_keys
).
union
(
list
(
self
.
aliases
.
keys
())
+
list
(
self
.
special
_aliases
)
list
(
self
.
aliases
.
keys
())
+
list
(
self
.
nested
_aliases
)
)
for
key
in
list
(
self
.
special
_branches
)
+
list
(
self
.
special
_aliases
):
for
key
in
list
(
self
.
nested
_branches
)
+
list
(
self
.
nested
_aliases
):
keys
.
add
(
"
n_
"
+
key
)
# self._grouped_branches = {k for k in toplevel_keys - skip_keys if isinstance(self._fobj[self.event_path][k].interpretation, uproot.AsGrouped)}
self
.
_keys
=
keys
...
...
@@ -115,7 +115,7 @@ class EventReader:
def
_keyfor
(
self
,
key
):
"""
Return the correct key for a given alias/key
"""
return
self
.
special
_aliases
.
get
(
key
,
key
)
return
self
.
nested
_aliases
.
get
(
key
,
key
)
def
__getattr__
(
self
,
attr
):
attr
=
self
.
_keyfor
(
attr
)
...
...
@@ -154,15 +154,15 @@ class EventReader:
# These are special branches which are nested, like hits/trks/mc_trks
# We are explicitly grabbing just a predefined set of subbranches
# and also alias them to be backwards compatible (and attribute-accessible)
if
key
in
self
.
special
_branches
:
if
key
in
self
.
nested
_branches
:
fields
=
[]
# some fields are not always available, like `usr_names`
for
to_field
,
from_field
in
self
.
special
_branches
[
key
].
items
():
for
to_field
,
from_field
in
self
.
nested
_branches
[
key
].
items
():
if
from_field
in
branch
[
key
].
keys
():
fields
.
append
(
to_field
)
log
.
debug
(
fields
)
# out = branch[key].arrays(fields, aliases=self.
special
_branches[key])
return
Branch
(
branch
[
key
],
fields
,
self
.
special
_branches
[
key
],
self
.
_index_chain
)
# out = branch[key].arrays(fields, aliases=self.
nested
_branches[key])
return
Branch
(
branch
[
key
],
fields
,
self
.
nested
_branches
[
key
],
self
.
_index_chain
)
else
:
return
unfold_indices
(
branch
[
self
.
aliases
.
get
(
key
,
key
)].
array
(),
self
.
_index_chain
)
...
...
@@ -174,13 +174,13 @@ class EventReader:
events
=
self
.
_fobj
[
self
.
event_path
]
group_count_keys
=
set
(
k
for
k
in
self
.
keys
()
if
k
.
startswith
(
"
n_
"
)
)
#
special
keys to make it easy to count subbranch lengths
)
#
extra
keys to make it easy to count subbranch lengths
log
.
debug
(
"
group_count_keys: %s
"
,
group_count_keys
)
keys
=
set
(
list
(
set
(
self
.
keys
())
-
set
(
self
.
special
_branches
.
keys
())
-
set
(
self
.
special
_aliases
)
-
set
(
self
.
nested
_branches
.
keys
())
-
set
(
self
.
nested
_aliases
)
-
group_count_keys
)
+
list
(
self
.
aliases
.
keys
())
...
...
@@ -191,18 +191,18 @@ class EventReader:
events_it
=
events
.
iterate
(
keys
,
aliases
=
self
.
aliases
,
step_size
=
self
.
_step_size
)
specials
=
[]
special
_keys
=
(
self
.
special
_branches
.
keys
()
nested
=
[]
nested
_keys
=
(
self
.
nested
_branches
.
keys
()
)
# dict-key ordering is an implementation detail
log
.
debug
(
"
special
_keys: %s
"
,
special
_keys
)
for
key
in
special
_keys
:
# print(f"adding {key} with keys {self.
special
_branches[key].keys()} and aliases {self.
special
_branches[key]}")
log
.
debug
(
"
nested
_keys: %s
"
,
nested
_keys
)
for
key
in
nested
_keys
:
# print(f"adding {key} with keys {self.
nested
_branches[key].keys()} and aliases {self.
nested
_branches[key]}")
specials
.
append
(
nested
.
append
(
events
[
key
].
iterate
(
self
.
special
_branches
[
key
].
keys
(),
aliases
=
self
.
special
_branches
[
key
],
self
.
nested
_branches
[
key
].
keys
(),
aliases
=
self
.
nested
_branches
[
key
],
step_size
=
self
.
_step_size
,
)
)
...
...
@@ -211,14 +211,14 @@ class EventReader:
group_counts
[
key
]
=
iter
(
self
[
key
])
log
.
debug
(
"
group_counts: %s
"
,
group_counts
)
for
event_set
,
*
special
_sets
in
zip
(
events_it
,
*
specials
):
for
_event
,
*
special
_items
in
zip
(
event_set
,
*
special
_sets
):
for
event_set
,
*
nested
_sets
in
zip
(
events_it
,
*
nested
):
for
_event
,
*
nested
_items
in
zip
(
event_set
,
*
nested
_sets
):
data
=
{}
for
k
in
keys
:
data
[
k
]
=
_event
[
k
]
for
(
k
,
i
)
in
zip
(
special_keys
,
special
_items
):
for
(
k
,
i
)
in
zip
(
nested_keys
,
nested
_items
):
data
[
k
]
=
i
for
tokey
,
fromkey
in
self
.
special
_aliases
.
items
():
for
tokey
,
fromkey
in
self
.
nested
_aliases
.
items
():
data
[
tokey
]
=
data
[
fromkey
]
for
key
in
group_counts
:
data
[
key
]
=
next
(
group_counts
[
key
])
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment