-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
meshesPath & particlesPath: optional #32
Changes from 2 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -394,11 +394,13 @@ def check_root_attr(f, v): | |
result_array += test_attr(f, v, "required", "openPMD", np.string_, "^[0-9]+\.[0-9]+\.[0-9]+$") | ||
result_array += test_attr(f, v, "required", "openPMDextension", np.uint32) | ||
result_array += test_attr(f, v, "required", "basePath", np.string_, "^\/data\/\%T\/$") | ||
result_array += test_attr(f, v, "required", "meshesPath", np.string_) | ||
result_array += test_attr(f, v, "required", "particlesPath", np.string_) | ||
result_array += test_attr(f, v, "required", "iterationEncoding", np.string_, "^groupBased|fileBased$") | ||
result_array += test_attr(f, v, "required", "iterationFormat", np.string_) | ||
|
||
# optional but required for data | ||
result_array += test_attr(f, v, "optional", "meshesPath", np.string_) | ||
result_array += test_attr(f, v, "optional", "particlesPath", np.string_) | ||
|
||
# groupBased iteration encoding needs to match basePath | ||
if result_array[0] == 0 : | ||
if f.attrs["iterationEncoding"].decode() == "groupBased" : | ||
|
@@ -548,35 +550,46 @@ def check_meshes(f, iteration, v, extensionStates): | |
# First element : number of errors | ||
# Second element : number of warnings | ||
result_array = np.array([ 0, 0]) | ||
|
||
# Find the path to the data | ||
base_path = "/data/%s/" % iteration | ||
valid, meshes_path = get_attr(f, "meshesPath") | ||
if not valid : | ||
print("Error: `meshesPath` is missing or malformed in '/'") | ||
return( np.array([1, 0]) ) | ||
meshes_path = meshes_path.decode() | ||
|
||
if os.path.join( base_path, meshes_path) != ( base_path + meshes_path ): | ||
print("Error: `basePath`+`meshesPath` seems to be malformed " | ||
"(is `basePath` absolute and ends on a `/` ?)") | ||
return( np.array([1, 0]) ) | ||
if valid: | ||
meshes_path = meshes_path.decode() | ||
else: | ||
full_meshes_path = (base_path + meshes_path).encode('ascii') | ||
# Find all the meshes | ||
try: | ||
list_meshes = list(f[full_meshes_path].keys()) | ||
except KeyError: | ||
list_meshes = [] | ||
print( "Iteration %s : found %d meshes" | ||
%( iteration, len(list_meshes) ) ) | ||
meshes_path = None | ||
if v: | ||
print("`meshesPath` attribute is missing in '/' " | ||
"(will not search for mesh records)") | ||
|
||
if meshes_path: | ||
if os.path.join( base_path, meshes_path) != ( base_path + meshes_path ): | ||
print("Error: `basePath`+`meshesPath` seems to be malformed " | ||
"(is `basePath` absolute and ends on a `/` ?)") | ||
return( np.array([1, 0]) ) | ||
else: | ||
full_meshes_path = (base_path + meshes_path).encode('ascii') | ||
# if set, a directory must exist with this name | ||
if not full_meshes_path in f: | ||
print("Error: `basePath`+`meshesPath` are set but path '{0}' " | ||
"does not exist in file!".format(full_meshes_path)) | ||
return( np.array([1, 0]) ) | ||
# Find all the meshes | ||
try: | ||
list_meshes = list(f[full_meshes_path].keys()) | ||
except KeyError: | ||
list_meshes = [] | ||
print( "Iteration %s : found %d meshes" | ||
%( iteration, len(list_meshes) ) ) | ||
else: | ||
list_meshes = [] | ||
|
||
# Check for the attributes of the STANDARD.md | ||
for field_name in list_meshes : | ||
field = f[full_meshes_path + field_name.encode('ascii')] | ||
|
||
result_array += test_record(f[full_meshes_path], field_name) | ||
|
||
# General attributes of the record | ||
result_array += test_attr(field, v, "required", | ||
"unitDimension", np.ndarray, np.float64) | ||
|
@@ -702,20 +715,39 @@ def check_particles(f, iteration, v, extensionStates) : | |
result_array = np.array([ 0, 0]) | ||
|
||
# Find the path to the data | ||
base_path = ("/data/%s/" % iteration).encode('ascii') | ||
base_path = "/data/%s/" % iteration | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why is the previously-defined There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. it was inconsistent between |
||
valid, particles_path = get_attr(f, "particlesPath") | ||
if os.path.join( base_path, particles_path) != \ | ||
( base_path + particles_path ) : | ||
print("Error: `basePath`+`particlesPath` seems to be malformed " | ||
"(is `basePath` absolute and ends on a `/` ?)") | ||
return( np.array([1, 0]) ) | ||
|
||
if valid: | ||
particles_path = particles_path.decode() | ||
else: | ||
full_particle_path = base_path + particles_path | ||
# Find all the particle species | ||
try: | ||
list_species = list(f[full_particle_path].keys()) | ||
except KeyError: | ||
list_species = [] | ||
particles_path = None | ||
if v: | ||
print("`particlesPath` attribute is missing in '/' " | ||
"(will not search for particle records)") | ||
|
||
if particles_path: | ||
if os.path.join( base_path, particles_path) != \ | ||
( base_path + particles_path ) : | ||
print("Error: `basePath`+`particlesPath` seems to be malformed " | ||
"(is `basePath` absolute and ends on a `/` ?)") | ||
return(np.array([1, 0])) | ||
else: | ||
full_particle_path = (base_path + particles_path).encode('ascii') | ||
# if set, a directory must exist with this name | ||
if not full_particle_path in f: | ||
print("Error: `basePath`+`particlesPath` are set but path " | ||
"'{0}' does not exist in file!".format( | ||
full_particle_path)) | ||
return(np.array([1, 0])) | ||
# Find all the particle species | ||
try: | ||
list_species = list(f[full_particle_path].keys()) | ||
except KeyError: | ||
list_species = [] | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Same remark on |
||
else: | ||
list_species = [] | ||
|
||
print( "Iteration %s : found %d particle species" | ||
%( iteration, len(list_species) ) ) | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you remove the
try / except KeyError
here? (Because you are basically testing for it above, with anif / return
statement)?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
True, we are testing it properly now! :)