Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
L
load_leveller
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Iterations
Merge Requests
0
Merge Requests
0
Requirements
Requirements
List
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Test Cases
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issue
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Lukas Weber
load_leveller
Commits
1c681dd7
Commit
1c681dd7
authored
Jul 30, 2019
by
Lukas Weber
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix vector observables
parent
f85ec54f
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
21 additions
and
29 deletions
+21
-29
python/loadleveller/mcextract.py
python/loadleveller/mcextract.py
+12
-20
src/merger.cpp
src/merger.cpp
+9
-9
No files found.
python/loadleveller/mcextract.py
View file @
1c681dd7
...
...
@@ -10,9 +10,8 @@ class Observable:
self
.
rebinning_bin_count
=
np
.
zeros
(
num_tasks
)
self
.
autocorrelation_time
=
np
.
zeros
(
num_tasks
)
+
np
.
nan
# have to be set later because dimension is unknown
self
.
mean
=
None
self
.
error
=
None
self
.
mean
=
[
None
for
i
in
range
(
num_tasks
)]
self
.
error
=
[
None
for
i
in
range
(
num_tasks
)]
class
MCArchive
:
def
__init__
(
self
,
filename
):
...
...
@@ -36,19 +35,8 @@ class MCArchive:
o
.
rebinning_bin_count
[
i
]
=
value
[
'rebinning_bin_count'
]
o
.
autocorrelation_time
[
i
]
=
value
[
'autocorrelation_time'
]
# fill in dimensions on first occurence of the observable
if
np
.
all
(
o
.
mean
==
None
):
o
.
mean
=
np
.
zeros
([
self
.
num_tasks
,
len
(
value
[
'mean'
])])
+
np
.
nan
o
.
error
=
np
.
zeros
([
self
.
num_tasks
,
len
(
value
[
'error'
])])
+
np
.
nan
if
o
.
mean
.
shape
!=
o
.
error
.
shape
:
raise
Exception
(
'observable "{}": dimension mismatch between mean and error'
.
format
(
obs
))
else
:
if
len
(
value
[
'mean'
])
!=
o
.
mean
.
shape
[
1
]
or
len
(
value
[
'error'
])
!=
o
.
error
.
shape
[
1
]:
raise
Exception
(
'observable "{}": dimension mismatch between different tasks'
.
format
(
obs
))
o
.
mean
[
i
,:]
=
value
[
'mean'
]
o
.
error
[
i
,:]
=
value
[
'error'
]
o
.
mean
[
i
]
=
value
[
'mean'
]
o
.
error
[
i
]
=
value
[
'error'
]
def
filter_mask
(
self
,
filter
):
if
not
filter
:
...
...
@@ -71,11 +59,15 @@ class MCArchive:
selection
.
rebinning_bin_count
=
orig
.
rebinning_bin_count
[
mask
]
selection
.
rebinning_bin_length
=
orig
.
rebinning_bin_length
[
mask
]
selection
.
autocorrelation_time
=
orig
.
autocorrelation_time
[
mask
]
selection
.
mean
=
orig
.
mean
[
mask
,:]
selection
.
error
=
orig
.
error
[
mask
,:]
selection
.
mean
=
[
m
for
i
,
m
in
enumerate
(
orig
.
mean
)
if
mask
[
i
]]
selection
.
error
=
[
m
for
i
,
m
in
enumerate
(
orig
.
error
)
if
mask
[
i
]]
if
all
(
len
(
m
)
==
len
(
selection
.
mean
[
0
])
for
m
in
selection
.
mean
):
selection
.
mean
=
np
.
array
(
selection
.
mean
)
selection
.
error
=
np
.
array
(
selection
.
error
)
# if it is not a vector observable we can make it simpler for the user
if
selection
.
mean
.
shape
[
-
1
]
==
1
:
if
selection
.
mean
.
shape
[
1
]
==
1
:
selection
.
mean
=
selection
.
mean
.
flatten
()
selection
.
error
=
selection
.
error
.
flatten
()
...
...
src/merger.cpp
View file @
1c681dd7
...
...
@@ -124,18 +124,19 @@ results merge(const std::vector<std::string> &filenames, const std::vector<evala
size_t
vector_idx
=
i
%
vector_length
;
obs
.
mean
[
vector_idx
]
+=
samples
[
i
];
metadata
[
obs_name
].
sample_counter
++
;
if
(
vector_idx
==
vector_length
-
1
)
{
metadata
[
obs_name
].
sample_counter
++
;
}
}
}
}
for
(
auto
&
entry
:
res
.
observables
)
{
auto
&
obs
=
entry
.
second
;
assert
(
metadata
[
entry
.
first
].
sample_counter
==
for
(
auto
&
[
obs_name
,
obs
]
:
res
.
observables
)
{
assert
(
metadata
[
obs_name
].
sample_counter
==
obs
.
rebinning_bin_count
*
obs
.
rebinning_bin_length
);
for
(
auto
&
mean
:
obs
.
mean
)
{
mean
/=
metadata
[
entry
.
first
].
sample_counter
;
mean
/=
metadata
[
obs_name
].
sample_counter
;
}
}
...
...
@@ -181,9 +182,8 @@ results merge(const std::vector<std::string> &filenames, const std::vector<evala
}
}
for
(
auto
&
entry
:
res
.
observables
)
{
auto
&
obs
=
entry
.
second
;
assert
(
metadata
[
entry
.
first
].
current_rebin
==
obs
.
rebinning_bin_count
);
for
(
auto
&
[
obs_name
,
obs
]
:
res
.
observables
)
{
assert
(
metadata
[
obs_name
].
current_rebin
==
obs
.
rebinning_bin_count
);
for
(
size_t
i
=
0
;
i
<
obs
.
error
.
size
();
i
++
)
{
int
used_samples
=
obs
.
rebinning_bin_count
*
obs
.
rebinning_bin_length
;
double
no_rebinning_error
=
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment