Skip to content

Improve info on available qualifiers #1027

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

Merged
merged 36 commits into from
Jul 20, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
ac3d046
Print available qualifiers in result_info
PProfizi Jul 12, 2023
c1a34b6
Add AvailableResult.qualifier_combinations property
PProfizi Jul 12, 2023
3f6f618
Add test for str(result_info) with qualifiers
PProfizi Jul 12, 2023
c2682e2
Add test for AvailableResult.qualifier_combinations
PProfizi Jul 12, 2023
eea19d5
Merge branch 'master' into feat/add_available_qualifiers_to_result_in…
PProfizi Jul 12, 2023
2c7b298
Fix typing
PProfizi Jul 12, 2023
82008af
Fix retro
PProfizi Jul 12, 2023
59fd8c9
Fix retro
PProfizi Jul 12, 2023
78f43be
Merge branch 'master' into feat/add_available_qualifiers_to_result_in…
PProfizi Jul 13, 2023
5b4de0f
Fix version check in result_info.py
PProfizi Jul 13, 2023
18cd932
raise in ResultInfo.__str__ for debug
PProfizi Jul 13, 2023
9615da1
Merge branch 'master' into feat/add_available_qualifiers_to_result_in…
PProfizi Jul 13, 2023
58ef36c
Try up required version for qualifiers in ResultInfo print
PProfizi Jul 13, 2023
31e485c
Fix test_print_result_info_with_qualifiers
PProfizi Jul 13, 2023
d78d3a6
Set back result_info str server version requirements for qualifiers t…
PProfizi Jul 13, 2023
81d5387
Set back result_info str server version requirements for qualifiers t…
PProfizi Jul 13, 2023
67a4f00
Debug docker
PProfizi Jul 13, 2023
6ec8784
Debug docker
PProfizi Jul 13, 2023
026ef8b
Actually test_result_info with qualifiers on all server types
PProfizi Jul 13, 2023
47bf517
Remove rogue prints from tests, please use str() instead to test strings
PProfizi Jul 13, 2023
7d26e0b
add verbose mode to delete_downloads()
PProfizi Jul 13, 2023
9a4df92
Remove progress bars for Workflows in tests
PProfizi Jul 13, 2023
f51aba8
Remove debug prints
PProfizi Jul 17, 2023
183d4e6
Merge branch 'master' into feat/add_available_qualifiers_to_result_in…
PProfizi Jul 18, 2023
f6060b9
Merge remote-tracking branch 'origin/feat/add_available_qualifiers_to…
PProfizi Jul 18, 2023
56d9279
Merge branch 'master' into feat/add_available_qualifiers_to_result_in…
PProfizi Jul 18, 2023
32ec6c8
Merge branch 'master' into feat/add_available_qualifiers_to_result_in…
PProfizi Jul 19, 2023
036fc89
Revert "Remove debug prints"
PProfizi Jul 20, 2023
cf45e1f
Revert "Remove progress bars for Workflows in tests"
PProfizi Jul 20, 2023
329f9ad
Revert "add verbose mode to delete_downloads()"
PProfizi Jul 20, 2023
03794f7
Revert "Remove rogue prints from tests, please use str() instead to t…
PProfizi Jul 20, 2023
84b5136
Merge branch 'master' into feat/add_available_qualifiers_to_result_in…
PProfizi Jul 20, 2023
35a1ba1
Revert "Revert "Remove debug prints""
PProfizi Jul 20, 2023
247ac0a
Revert "Revert "Remove progress bars for Workflows in tests""
PProfizi Jul 20, 2023
dcc05a4
Revert "Revert "Remove rogue prints from tests, please use str() inst…
PProfizi Jul 20, 2023
0911428
Revert "Revert "add verbose mode to delete_downloads()""
PProfizi Jul 20, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions src/ansys/dpf/core/available_result.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
===============
"""

from typing import List
from warnings import warn
from ansys.dpf.core.common import _remove_spaces, _make_as_function_name, natures
from enum import Enum, unique
Expand Down Expand Up @@ -250,6 +251,14 @@ def qualifier_labels(self) -> dict:
"""Returns a dictionary of available labels for each available qualifier."""
return self._qualifier_labels

@property
def qualifier_combinations(self) -> List[dict]:
"""Returns the list of valid qualifier combinations for this result.

Each combination is a dictionary which can be used for a result request.
"""
return [q.__dict__() for q in self.qualifiers]


_result_properties = {
"S": {"location": "ElementalNodal", "scripting_name": "stress"},
Expand Down
8 changes: 5 additions & 3 deletions src/ansys/dpf/core/examples/downloads.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
EXAMPLE_REPO = "https://github.com/ansys/example-data/raw/master/"


def delete_downloads():
def delete_downloads(verbose=True):
"""Delete all downloaded examples to free space or update the files"""
from ansys.dpf.core import LOCAL_DOWNLOADED_EXAMPLES_PATH, examples

Expand All @@ -34,7 +34,8 @@ def delete_downloads():
if not os.path.join(root, name) in not_to_remove:
try:
os.remove(os.path.join(root, name))
print(f"deleting {os.path.join(root, name)}")
if verbose:
print(f"deleting {os.path.join(root, name)}")
except Exception as e:
warnings.warn(
f"couldn't delete {os.path.join(root, name)} with error:\n {e.args}"
Expand All @@ -43,7 +44,8 @@ def delete_downloads():
if len(dirs) == 0 and len(files) == 0:
try:
os.rmdir(root)
print(f"deleting {root}")
if verbose:
print(f"deleting {root}")
except Exception as e:
warnings.warn(f"couldn't delete {root} with error:\n {e.args}")

Expand Down
15 changes: 15 additions & 0 deletions src/ansys/dpf/core/result_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,8 +127,23 @@ def __str__(self):
]
txt += "{0:^4} {1:^2} {2:<30}".format(*line) + "\n"

if self._server.meet_version("7.0"):
qualifiers_labels = self.available_qualifier_labels
if len(qualifiers_labels) > 0:
txt += "Available qualifier labels:\n"
for label in qualifiers_labels:
label_support = self.qualifier_label_support(label)
names_field = label_support.string_field_support_by_property("names")
label_names = names_field.data_as_list
label_values = names_field.scoping.ids.tolist()
txt += f" - {label}: "
for i, value in enumerate(label_values):
label_values[i] = label_names[i] + f" ({value})"
txt += f"{', '.join(label_values)}\n"

return txt
except Exception as e:
raise e
from ansys.dpf.core.core import _description

return _description(self._internal_obj, self._server)
Expand Down
27 changes: 27 additions & 0 deletions tests/slow/test_remoteworkflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,15 @@
def test_simple_remote_workflow(simple_bar, local_server):
data_sources1 = core.DataSources(simple_bar)
wf = core.Workflow()
wf.progress_bar = False
op = ops.result.displacement(data_sources=data_sources1)
average = core.operators.math.norm_fc(op)

wf.add_operators([op, average])
wf.set_output_name("out", average.outputs.fields_container)

local_wf = core.Workflow()
local_wf.progress_bar = False
min_max = ops.min_max.min_max_fc()
local_wf.add_operator(min_max)
local_wf.set_input_name("in", min_max.inputs.fields_container)
Expand Down Expand Up @@ -53,6 +55,7 @@ def test_multi_process_remote_workflow():
for i in files:
data_sources1 = core.DataSources(files[i])
wf = core.Workflow()
wf.progress_bar = False
op = ops.result.displacement(data_sources=data_sources1)
average = core.operators.math.norm_fc(op)

Expand All @@ -75,6 +78,7 @@ def test_multi_process_remote_workflow():
workflows.append(remote_workflow)

local_wf = core.Workflow()
local_wf.progress_bar = False
merge = ops.utility.merge_fields_containers()
min_max = ops.min_max.min_max_fc(merge)
local_wf.add_operator(merge)
Expand All @@ -95,6 +99,7 @@ def test_multi_process_remote_workflow():
def test_multi_process_connect_remote_workflow():
files = examples.download_distributed_files()
wf = core.Workflow()
wf.progress_bar = False
op = ops.result.displacement()
average = core.operators.math.norm_fc(op)

Expand All @@ -121,6 +126,7 @@ def test_multi_process_connect_remote_workflow():
workflows.append(remote_workflow)

local_wf = core.Workflow()
local_wf.progress_bar = False
merge = ops.utility.merge_fields_containers()
min_max = ops.min_max.min_max_fc(merge)
local_wf.add_operator(merge)
Expand All @@ -141,6 +147,7 @@ def test_multi_process_connect_remote_workflow():
def test_multi_process_connect_operator_remote_workflow():
files = examples.download_distributed_files()
wf = core.Workflow()
wf.progress_bar = False
op = ops.result.displacement()
average = core.operators.math.norm_fc(op)

Expand Down Expand Up @@ -168,6 +175,7 @@ def test_multi_process_connect_operator_remote_workflow():
workflows.append(remote_workflow)

local_wf = core.Workflow()
local_wf.progress_bar = False
merge = ops.utility.merge_fields_containers()
min_max = ops.min_max.min_max_fc(merge)
local_wf.add_operator(merge)
Expand All @@ -188,6 +196,7 @@ def test_multi_process_connect_operator_remote_workflow():
def test_multi_process_getoutput_remote_workflow():
files = examples.download_distributed_files()
wf = core.Workflow()
wf.progress_bar = False
op = ops.result.displacement()
average = core.operators.math.norm_fc(op)

Expand All @@ -214,6 +223,7 @@ def test_multi_process_getoutput_remote_workflow():
workflows.append(remote_workflow)

local_wf = core.Workflow()
local_wf.progress_bar = False
merge = ops.utility.merge_fields_containers()
min_max = ops.min_max.min_max_fc(merge)
local_wf.add_operator(merge)
Expand All @@ -236,6 +246,7 @@ def test_multi_process_getoutput_remote_workflow():
def test_multi_process_chain_remote_workflow():
files = examples.download_distributed_files()
wf = core.Workflow()
wf.progress_bar = False
op = ops.result.displacement()
average = core.operators.math.norm_fc(op)

Expand All @@ -262,6 +273,7 @@ def test_multi_process_chain_remote_workflow():
workflows.append(remote_workflow)

local_wf = core.Workflow()
local_wf.progress_bar = False
merge = ops.utility.merge_fields_containers()
min_max = ops.min_max.min_max_fc(merge)
local_wf.add_operator(merge)
Expand Down Expand Up @@ -293,6 +305,7 @@ def test_multi_process_chain_remote_workflow():
)
def test_remote_workflow_info(local_server):
wf = core.Workflow()
wf.progress_bar = False
op = ops.result.displacement()
average = core.operators.math.norm_fc(op)

Expand All @@ -318,6 +331,7 @@ def test_multi_process_local_remote_local_remote_workflow():
files = examples.download_distributed_files()

wf = core.Workflow()
wf.progress_bar = False
average = core.operators.math.norm_fc()

wf.add_operators([average])
Expand All @@ -340,6 +354,7 @@ def test_multi_process_local_remote_local_remote_workflow():
remote_workflow = remote_workflow_prov.get_output(0, core.types.workflow)

first_wf = core.Workflow()
first_wf.progress_bar = False
op = ops.result.displacement()
first_wf.add_operator(op)
first_wf.set_input_name("data_sources", op.inputs.data_sources)
Expand All @@ -351,6 +366,7 @@ def test_multi_process_local_remote_local_remote_workflow():
workflows.append(remote_workflow)

local_wf = core.Workflow()
local_wf.progress_bar = False
merge = ops.utility.merge_fields_containers()
min_max = ops.min_max.min_max_fc(merge)
local_wf.add_operator(merge)
Expand All @@ -374,6 +390,7 @@ def test_multi_process_transparent_api_remote_workflow():
for i in files:
data_sources1 = core.DataSources(files[i], server=local_servers[i])
wf = core.Workflow(server=local_servers[i])
wf.progress_bar = False
op = ops.result.displacement(data_sources=data_sources1, server=local_servers[i])
average = core.operators.math.norm_fc(op, server=local_servers[i])

Expand All @@ -383,6 +400,7 @@ def test_multi_process_transparent_api_remote_workflow():
workflows.append(wf)

local_wf = core.Workflow()
local_wf.progress_bar = False
merge = ops.utility.merge_fields_containers()
min_max = ops.min_max.min_max_fc(merge)
local_wf.add_operator(merge)
Expand All @@ -406,6 +424,7 @@ def test_multi_process_with_names_transparent_api_remote_workflow():
for i in files:
data_sources1 = core.DataSources(files[i], server=local_servers[i])
wf = core.Workflow(server=local_servers[i])
wf.progress_bar = False
op = ops.result.displacement(data_sources=data_sources1, server=local_servers[i])
average = core.operators.math.norm_fc(op, server=local_servers[i])

Expand All @@ -415,6 +434,7 @@ def test_multi_process_with_names_transparent_api_remote_workflow():
workflows.append(wf)

local_wf = core.Workflow()
local_wf.progress_bar = False
merge = ops.utility.merge_fields_containers()
min_max = ops.min_max.min_max_fc(merge)
local_wf.add_operator(merge)
Expand All @@ -437,6 +457,7 @@ def test_multi_process_transparent_api_connect_local_datasources_remote_workflow
workflows = []
for i in files:
wf = core.Workflow(server=local_servers[i])
wf.progress_bar = False
op = ops.result.displacement(server=local_servers[i])
average = core.operators.math.norm_fc(op, server=local_servers[i])

Expand All @@ -446,6 +467,7 @@ def test_multi_process_transparent_api_connect_local_datasources_remote_workflow
workflows.append(wf)

local_wf = core.Workflow()
local_wf.progress_bar = False
merge = ops.utility.merge_fields_containers()
min_max = ops.min_max.min_max_fc(merge)
local_wf.add_operator(merge)
Expand All @@ -470,6 +492,7 @@ def test_multi_process_transparent_api_connect_local_op_remote_workflow():
workflows = []
for i in files:
wf = core.Workflow(server=local_servers[i])
wf.progress_bar = False
op = ops.result.displacement(server=local_servers[i])
average = core.operators.math.norm_fc(op, server=local_servers[i])

Expand All @@ -479,6 +502,7 @@ def test_multi_process_transparent_api_connect_local_op_remote_workflow():
workflows.append(wf)

local_wf = core.Workflow()
local_wf.progress_bar = False
merge = ops.utility.merge_fields_containers()
min_max = ops.min_max.min_max_fc(merge)
local_wf.add_operator(merge)
Expand All @@ -502,6 +526,7 @@ def test_multi_process_transparent_api_connect_local_op_remote_workflow():
def test_multi_process_transparent_api_create_on_local_remote_workflow():
files = examples.download_distributed_files()
wf = core.Workflow()
wf.progress_bar = False
op = ops.result.displacement()
average = core.operators.math.norm_fc(op)

Expand All @@ -510,6 +535,7 @@ def test_multi_process_transparent_api_create_on_local_remote_workflow():
wf.set_input_name("ds", op.inputs.data_sources)

local_wf = core.Workflow()
local_wf.progress_bar = False
merge = ops.utility.merge_fields_containers()
min_max = ops.min_max.min_max_fc(merge)
local_wf.add_operator(merge)
Expand All @@ -533,6 +559,7 @@ def test_multi_process_transparent_api_create_on_local_remote_workflow():
def test_multi_process_transparent_api_create_on_local_remote_ith_address_workflow():
files = examples.download_distributed_files()
wf = core.Workflow()
wf.progress_bar = False
op = ops.result.displacement()
average = core.operators.math.norm_fc(op)

Expand Down
2 changes: 2 additions & 0 deletions tests/test_animator.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ def test_animator_animate(displacement_fields):
loop_over_field.unit = frequencies.unit

wf = Workflow()
wf.progress_bar = False
extract_field_op = dpf.operators.utility.extract_field(displacement_fields)
wf.set_input_name("loop_over", extract_field_op.inputs.indices)
wf.set_output_name("to_render", extract_field_op.outputs.field)
Expand All @@ -85,6 +86,7 @@ def test_animator_animate_raise_wrong_scale_factor(remove_gifs, displacement_fie
loop_over_field.unit = frequencies.unit

wf = Workflow()
wf.progress_bar = False
extract_field_op = dpf.operators.utility.extract_field(displacement_fields)
wf.set_input_name("loop_over", extract_field_op.inputs.indices)
wf.set_output_name("to_render", extract_field_op.outputs.field)
Expand Down
4 changes: 2 additions & 2 deletions tests/test_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ def test_cff_model(server_type, fluent_multi_species):
)
def test_results_cfx(cfx_heating_coil, server_type):
model = dpf.Model(cfx_heating_coil(server=server_type), server=server_type)
print(model)
# print(model)
result_names = [
"specific_heat",
"epsilon",
Expand Down Expand Up @@ -55,7 +55,7 @@ def test_results_cfx(cfx_heating_coil, server_type):
)
def test_results_fluent(fluent_mixing_elbow_steady_state, server_type):
model = dpf.Model(fluent_mixing_elbow_steady_state(server=server_type), server=server_type)
print(model)
# print(model)
result_names = [
"epsilon",
"enthalpy",
Expand Down
2 changes: 1 addition & 1 deletion tests/test_codegeneration.py
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ def test_generated_operator_set_config():
inpt2.unit = "m"

conf = op.math.add.default_config()
print(conf)
# print(conf)
conf.set_work_by_index_option(True)
op1 = op.math.add(config=conf)
op1.inputs.fieldA.connect(inpt)
Expand Down
4 changes: 2 additions & 2 deletions tests/test_custom_type_field.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ def test_set_get_data_custom_type_field(server_type):
data[i] = np.byte(b"2")
field.data = data
assert np.allclose(field.data, data)
print(field.data)
# print(field.data)


@conftest.raises_for_servers_version_under("5.0")
Expand Down Expand Up @@ -96,7 +96,7 @@ def test_set_get_field_def_custom_type_field(server_type):

copy = field.field_definition

print(copy.dimensionality)
# print(copy.dimensionality)
assert copy.dimensionality == dpf.core.Dimensionality([3], dpf.core.natures.vector)
assert copy.location == core.locations.elemental
assert copy.name == "thing"
Expand Down
1 change: 1 addition & 0 deletions tests/test_cyclic_support.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ def test_cyc_support_from_to_workflow(cyclic_lin_rst, server_type):
cyc_support = result_info.cyclic_support
op = dpf.operators.metadata.cyclic_mesh_expansion(server=server_type)
wf = dpf.Workflow(server=server_type)
wf.progress_bar = False
wf.set_input_name("sup", op.inputs.cyclic_support)
wf.set_output_name("sup", op.outputs.cyclic_support)
wf.connect("sup", cyc_support)
Expand Down
2 changes: 1 addition & 1 deletion tests/test_elements.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ def test_no_element_descriptor():
# descriptor = dpf.element_types.descriptor(89)
# assert not descriptor
descriptor = dpf.element_types.descriptor(dpf.element_types.General)
print(descriptor)
# print(descriptor)
unknown_shape = "unknown_shape"
assert descriptor.shape == unknown_shape
assert dpf.element_types.descriptor(dpf.element_types.General).shape == unknown_shape
Expand Down
2 changes: 1 addition & 1 deletion tests/test_examples.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ def test_find_examples(example, server_type_remote_process):
def test_delete_downloaded_files():
path = examples.download_multi_stage_cyclic_result(return_local_path=True)
assert os.path.exists(path)
examples.delete_downloads()
examples.delete_downloads(verbose=False)
assert not os.path.exists(path)
path = examples.download_multi_stage_cyclic_result(return_local_path=True)
assert os.path.exists(path)
Expand Down
2 changes: 1 addition & 1 deletion tests/test_factories.py
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,7 @@ def test_elemental_scoping():

def test_named_selection_scoping(model_with_ns):
model = Model(model_with_ns)
print(model.metadata.available_named_selections)
# print(model.metadata.available_named_selections)
scop = mesh_scoping_factory.named_selection_scoping("SELECTION", model)
assert scop is not None
assert len(scop.ids) != 0
Loading