diff --git a/examples/meshstats/test_cases/example_abstract_input.json b/examples/meshstats/test_cases/example_abstract_input.json new file mode 100644 index 00000000..0946da99 --- /dev/null +++ b/examples/meshstats/test_cases/example_abstract_input.json @@ -0,0 +1,59 @@ +{ + "inputs": { + "mesh": { + "n_points": 5, + "n_cells": 8, + "points": { + "shape": [ + 5, + 3 + ], + "dtype": "float32" + }, + "num_points_per_cell": { + "shape": [ + 2 + ], + "dtype": "int32" + }, + "cell_connectivity": { + "shape": [ + 8 + ], + "dtype": "int32" + }, + "cell_data": { + "temperature": { + "shape": [ + 2, + 2 + ], + "dtype": "float32" + }, + "pressure": { + "shape": [ + 2, + 2 + ], + "dtype": "float32" + } + }, + "point_data": { + "displacement": { + "shape": [ + 5, + 3 + ], + "dtype": "float32" + }, + "velocity": { + "shape": [ + 5, + 3 + ], + "dtype": "float32" + } + } + } + } +} diff --git a/examples/meshstats/test_cases/example_checkgradients_input.json b/examples/meshstats/test_cases/example_checkgradients_input.json new file mode 100644 index 00000000..e5a3e80c --- /dev/null +++ b/examples/meshstats/test_cases/example_checkgradients_input.json @@ -0,0 +1,94 @@ +{ + "inputs": { + "mesh": { + "n_points": 5, + "n_cells": 2, + "points": { + "object_type": "array", + "shape": [ + 5, + 3 + ], + "dtype": "float64", + "data": { + "buffer": "AAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAA4D8AAAAAAADgPwAAAAAAAPA/", + "encoding": "base64" + } + }, + "num_points_per_cell": { + "object_type": "array", + "shape": [ + 2 + ], + "dtype": "int64", + "data": { + "buffer": "BAAAAAAAAAAEAAAAAAAAAA==", + "encoding": "base64" + } + }, + "cell_connectivity": { + "object_type": "array", + "shape": [ + 8 + ], + "dtype": "int64", + "data": { + "buffer": "AAAAAAAAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAA==", + "encoding": "base64" + } + }, + "cell_data": { + "temperature": { + "object_type": "array", + "shape": [ + 2, + 2 + ], + "dtype": "float64", + "data": { + "buffer": "AAAAAAAAWUAAAAAAAEBaQAAAAAAAgFtAAAAAAADAXEA=", + "encoding": "base64" + } + }, + "pressure": { + "object_type": "array", + "shape": [ + 2, + 2 + ], + "dtype": "float64", + "data": { + "buffer": "AAAAAAAA8D8zMzMzMzPzP5qZmZmZmfE/zczMzMzM9D8=", + "encoding": "base64" + } + } + }, + "point_data": { + "displacement": { + "object_type": "array", + "shape": [ + 5, + 3 + ], + "dtype": "float64", + "data": { + "buffer": "AAAAAAAAAACamZmZmZm5P5qZmZmZmck/mpmZmZmZuT8AAAAAAAAAAJqZmZmZmck/mpmZmZmZyT+amZmZmZm5PwAAAAAAAAAAmpmZmZmZuT+amZmZmZnJP5qZmZmZmbk/mpmZmZmZyT+amZmZmZm5P5qZmZmZmbk/", + "encoding": "base64" + } + }, + "velocity": { + "object_type": "array", + "shape": [ + 5, + 3 + ], + "dtype": "float64", + "data": { + "buffer": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmpmZmZmZuT8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACamZmZmZm5PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJqZmZmZmbk/mpmZmZmZuT+amZmZmZm5P5qZmZmZmbk/", + "encoding": "base64" + } + } + } + } + } +} diff --git a/examples/meshstats/test_cases/example_input.json b/examples/meshstats/test_cases/example_input.json new file mode 100644 index 00000000..81064f69 --- /dev/null +++ b/examples/meshstats/test_cases/example_input.json @@ -0,0 +1,94 @@ +{ + "inputs": { + "mesh": { + "n_points": 5, + "n_cells": 2, + "points": { + "object_type": "array", + "shape": [ + 5, + 3 + ], + "dtype": "float64", + "data": { + "buffer": "AAAAAAAAAAAAAAAAANCEQAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAA4D8AAAAAAADgPwAAAAAAAPA/", + "encoding": "base64" + } + }, + "num_points_per_cell": { + "object_type": "array", + "shape": [ + 2 + ], + "dtype": "int64", + "data": { + "buffer": "BAAAAAAAAAAEAAAAAAAAAA==", + "encoding": "base64" + } + }, + "cell_connectivity": { + "object_type": "array", + "shape": [ + 8 + ], + "dtype": "int64", + "data": { + "buffer": "AAAAAAAAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAA==", + "encoding": "base64" + } + }, + "cell_data": { + "temperature": { + "object_type": "array", + "shape": [ + 2, + 2 + ], + "dtype": "float64", + "data": { + "buffer": "AAAAAAAAWUAAAAAAAEBaQAAAAAAAgFtAAAAAAADAXEA=", + "encoding": "base64" + } + }, + "pressure": { + "object_type": "array", + "shape": [ + 2, + 2 + ], + "dtype": "float64", + "data": { + "buffer": "AAAAAAAA8D8zMzMzMzPzP5qZmZmZmfE/zczMzMzM9D8=", + "encoding": "base64" + } + } + }, + "point_data": { + "displacement": { + "object_type": "array", + "shape": [ + 5, + 3 + ], + "dtype": "float64", + "data": { + "buffer": "AAAAAAAAAACamZmZmZm5P5qZmZmZmck/mpmZmZmZuT8AAAAAAAAAAJqZmZmZmck/mpmZmZmZyT+amZmZmZm5PwAAAAAAAAAAmpmZmZmZuT+amZmZmZnJP5qZmZmZmbk/mpmZmZmZyT+amZmZmZm5P5qZmZmZmbk/", + "encoding": "base64" + } + }, + "velocity": { + "object_type": "array", + "shape": [ + 5, + 3 + ], + "dtype": "float64", + "data": { + "buffer": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmpmZmZmZuT8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACamZmZmZm5PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJqZmZmZmbk/mpmZmZmZuT+amZmZmZm5P5qZmZmZmbk/", + "encoding": "base64" + } + } + } + } + } +} diff --git a/examples/meshstats/test_cases/example_jacobian_input.json b/examples/meshstats/test_cases/example_jacobian_input.json new file mode 100644 index 00000000..5e1966f2 --- /dev/null +++ b/examples/meshstats/test_cases/example_jacobian_input.json @@ -0,0 +1,100 @@ +{ + "jac_inputs": [ + "mesh.points" + ], + "jac_outputs": [ + "statistics.barycenter" + ], + "inputs": { + "mesh": { + "n_points": 5, + "n_cells": 2, + "points": { + "object_type": "array", + "shape": [ + 5, + 3 + ], + "dtype": "float64", + "data": { + "buffer": "AAAAAAAAAAAAAAAAANCEQAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAA4D8AAAAAAADgPwAAAAAAAPA/", + "encoding": "base64" + } + }, + "num_points_per_cell": { + "object_type": "array", + "shape": [ + 2 + ], + "dtype": "int64", + "data": { + "buffer": "BAAAAAAAAAAEAAAAAAAAAA==", + "encoding": "base64" + } + }, + "cell_connectivity": { + "object_type": "array", + "shape": [ + 8 + ], + "dtype": "int64", + "data": { + "buffer": "AAAAAAAAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAA==", + "encoding": "base64" + } + }, + "cell_data": { + "temperature": { + "object_type": "array", + "shape": [ + 2, + 2 + ], + "dtype": "float64", + "data": { + "buffer": "AAAAAAAAWUAAAAAAAEBaQAAAAAAAgFtAAAAAAADAXEA=", + "encoding": "base64" + } + }, + "pressure": { + "object_type": "array", + "shape": [ + 2, + 2 + ], + "dtype": "float64", + "data": { + "buffer": "AAAAAAAA8D8zMzMzMzPzP5qZmZmZmfE/zczMzMzM9D8=", + "encoding": "base64" + } + } + }, + "point_data": { + "displacement": { + "object_type": "array", + "shape": [ + 5, + 3 + ], + "dtype": "float64", + "data": { + "buffer": "AAAAAAAAAACamZmZmZm5P5qZmZmZmck/mpmZmZmZuT8AAAAAAAAAAJqZmZmZmck/mpmZmZmZyT+amZmZmZm5PwAAAAAAAAAAmpmZmZmZuT+amZmZmZnJP5qZmZmZmbk/mpmZmZmZyT+amZmZmZm5P5qZmZmZmbk/", + "encoding": "base64" + } + }, + "velocity": { + "object_type": "array", + "shape": [ + 5, + 3 + ], + "dtype": "float64", + "data": { + "buffer": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmpmZmZmZuT8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACamZmZmZm5PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJqZmZmZmbk/mpmZmZmZuT+amZmZmZm5P5qZmZmZmbk/", + "encoding": "base64" + } + } + } + } + } +} diff --git a/examples/univariate/test_cases/bad_jacobian_input.json b/examples/univariate/test_cases/bad_jacobian_input.json new file mode 100644 index 00000000..f28d4a02 --- /dev/null +++ b/examples/univariate/test_cases/bad_jacobian_input.json @@ -0,0 +1,12 @@ +{ + "inputs": { + "x": 0.0, + "y": 0.0 + }, + "jac_inputs": [ + "hey" + ], + "jac_outputs": [ + "result" + ] +} diff --git a/examples/univariate/test_cases/example_checkgradients_input.json b/examples/univariate/test_cases/example_checkgradients_input.json new file mode 100644 index 00000000..f5ac9832 --- /dev/null +++ b/examples/univariate/test_cases/example_checkgradients_input.json @@ -0,0 +1,6 @@ +{ + "inputs": { + "x": 0.0, + "y": 0.0 + } +} diff --git a/examples/univariate/test_cases/example_input.json b/examples/univariate/test_cases/example_input.json new file mode 100644 index 00000000..f5ac9832 --- /dev/null +++ b/examples/univariate/test_cases/example_input.json @@ -0,0 +1,6 @@ +{ + "inputs": { + "x": 0.0, + "y": 0.0 + } +} diff --git a/examples/univariate/test_cases/example_jvp_input.json b/examples/univariate/test_cases/example_jvp_input.json new file mode 100644 index 00000000..17f9a6c0 --- /dev/null +++ b/examples/univariate/test_cases/example_jvp_input.json @@ -0,0 +1,17 @@ +{ + "inputs": { + "x": 0.0, + "y": 0.0 + }, + "jvp_inputs": [ + "x", + "y" + ], + "jvp_outputs": [ + "result" + ], + "tangent_vector": { + "x": 1.0, + "y": 0.0 + } +} diff --git a/examples/univariate/test_cases/example_vjp_input.json b/examples/univariate/test_cases/example_vjp_input.json new file mode 100644 index 00000000..f75ebca3 --- /dev/null +++ b/examples/univariate/test_cases/example_vjp_input.json @@ -0,0 +1,16 @@ +{ + "inputs": { + "x": 0.0, + "y": 0.0 + }, + "vjp_inputs": [ + "x", + "y" + ], + "vjp_outputs": [ + "result" + ], + "cotangent_vector": { + "result": 1.0 + } +} diff --git a/examples/univariate/test_cases/wrtX_jacobian_input.json b/examples/univariate/test_cases/wrtX_jacobian_input.json new file mode 100644 index 00000000..ba9f471f --- /dev/null +++ b/examples/univariate/test_cases/wrtX_jacobian_input.json @@ -0,0 +1,12 @@ +{ + "inputs": { + "x": 0.0, + "y": 0.0 + }, + "jac_inputs": [ + "x" + ], + "jac_outputs": [ + "result" + ] +} diff --git a/examples/univariate/test_cases/wrtY_jacobian_input.json b/examples/univariate/test_cases/wrtY_jacobian_input.json new file mode 100644 index 00000000..f4154e04 --- /dev/null +++ b/examples/univariate/test_cases/wrtY_jacobian_input.json @@ -0,0 +1,12 @@ +{ + "inputs": { + "x": 0.0, + "y": 0.0 + }, + "jac_inputs": [ + "y" + ], + "jac_outputs": [ + "result" + ] +} diff --git a/examples/vectoradd/test_cases/badInputs_jacobian_input.json b/examples/vectoradd/test_cases/badInputs_jacobian_input.json new file mode 100644 index 00000000..52dbd4ca --- /dev/null +++ b/examples/vectoradd/test_cases/badInputs_jacobian_input.json @@ -0,0 +1,33 @@ +{ + "inputs": { + "a": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "AQAAAAAAAAACAAAAAAAAAAMAAAAAAAAA", + "encoding": "base64" + } + }, + "b": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "BAAAAAAAAAAFAAAAAAAAAAYAAAAAAAAA", + "encoding": "base64" + } + } + }, + "jac_inputs": [ + "invalid", + "inputs" + ], + "jac_outputs": [ + "result" + ] +} diff --git a/examples/vectoradd/test_cases/badOutputs_jacobian_input.json b/examples/vectoradd/test_cases/badOutputs_jacobian_input.json new file mode 100644 index 00000000..c9374004 --- /dev/null +++ b/examples/vectoradd/test_cases/badOutputs_jacobian_input.json @@ -0,0 +1,34 @@ +{ + "inputs": { + "a": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "AQAAAAAAAAACAAAAAAAAAAMAAAAAAAAA", + "encoding": "base64" + } + }, + "b": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "BAAAAAAAAAAFAAAAAAAAAAYAAAAAAAAA", + "encoding": "base64" + } + } + }, + "jac_inputs": [ + "s", + "a" + ], + "jac_outputs": [ + "invalid", + "outputs" + ] +} diff --git a/examples/vectoradd/test_cases/example_checkgradients_input.json b/examples/vectoradd/test_cases/example_checkgradients_input.json new file mode 100644 index 00000000..9fd540ec --- /dev/null +++ b/examples/vectoradd/test_cases/example_checkgradients_input.json @@ -0,0 +1,26 @@ +{ + "inputs": { + "a": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "AQAAAAAAAAACAAAAAAAAAAMAAAAAAAAA", + "encoding": "base64" + } + }, + "b": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "BAAAAAAAAAAFAAAAAAAAAAYAAAAAAAAA", + "encoding": "base64" + } + } + } +} diff --git a/examples/vectoradd/test_cases/example_input.json b/examples/vectoradd/test_cases/example_input.json new file mode 100644 index 00000000..9fd540ec --- /dev/null +++ b/examples/vectoradd/test_cases/example_input.json @@ -0,0 +1,26 @@ +{ + "inputs": { + "a": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "AQAAAAAAAAACAAAAAAAAAAMAAAAAAAAA", + "encoding": "base64" + } + }, + "b": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "BAAAAAAAAAAFAAAAAAAAAAYAAAAAAAAA", + "encoding": "base64" + } + } + } +} diff --git a/examples/vectoradd/test_cases/example_jacobian_input.json b/examples/vectoradd/test_cases/example_jacobian_input.json new file mode 100644 index 00000000..b1538c3a --- /dev/null +++ b/examples/vectoradd/test_cases/example_jacobian_input.json @@ -0,0 +1,33 @@ +{ + "inputs": { + "a": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "AQAAAAAAAAACAAAAAAAAAAMAAAAAAAAA", + "encoding": "base64" + } + }, + "b": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "BAAAAAAAAAAFAAAAAAAAAAYAAAAAAAAA", + "encoding": "base64" + } + } + }, + "jac_inputs": [ + "s", + "a" + ], + "jac_outputs": [ + "result" + ] +} diff --git a/examples/vectoradd_jax/test_cases/bad_input.json b/examples/vectoradd_jax/test_cases/bad_input.json new file mode 100644 index 00000000..6f05c9d1 --- /dev/null +++ b/examples/vectoradd_jax/test_cases/bad_input.json @@ -0,0 +1,3 @@ +{ + "inputs": {} +} diff --git a/examples/vectoradd_jax/test_cases/example_abstract_input.json b/examples/vectoradd_jax/test_cases/example_abstract_input.json new file mode 100644 index 00000000..0842c221 --- /dev/null +++ b/examples/vectoradd_jax/test_cases/example_abstract_input.json @@ -0,0 +1,28 @@ +{ + "inputs": { + "a": { + "v": { + "shape": [ + 3 + ], + "dtype": "float32" + }, + "s": { + "shape": [], + "dtype": "float32" + } + }, + "b": { + "v": { + "shape": [ + 3 + ], + "dtype": "float32" + }, + "s": { + "shape": [], + "dtype": "float32" + } + } + } +} diff --git a/examples/vectoradd_jax/test_cases/example_checkgradients_input.json b/examples/vectoradd_jax/test_cases/example_checkgradients_input.json new file mode 100644 index 00000000..e7660524 --- /dev/null +++ b/examples/vectoradd_jax/test_cases/example_checkgradients_input.json @@ -0,0 +1,32 @@ +{ + "inputs": { + "a": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "AQAAAAAAAAACAAAAAAAAAAMAAAAAAAAA", + "encoding": "base64" + } + }, + "s": 2 + }, + "b": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "BAAAAAAAAAAFAAAAAAAAAAYAAAAAAAAA", + "encoding": "base64" + } + }, + "s": 1 + } + } +} diff --git a/examples/vectoradd_jax/test_cases/example_input.json b/examples/vectoradd_jax/test_cases/example_input.json new file mode 100644 index 00000000..82163d91 --- /dev/null +++ b/examples/vectoradd_jax/test_cases/example_input.json @@ -0,0 +1,32 @@ +{ + "inputs": { + "a": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "AQAAAAAAAAACAAAAAAAAAAMAAAAAAAAA", + "encoding": "base64" + } + }, + "s": 3 + }, + "b": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "BAAAAAAAAAAFAAAAAAAAAAYAAAAAAAAA", + "encoding": "base64" + } + }, + "s": 1 + } + } +} diff --git a/examples/vectoradd_jax/test_cases/example_jacobian_input.json b/examples/vectoradd_jax/test_cases/example_jacobian_input.json new file mode 100644 index 00000000..34187f53 --- /dev/null +++ b/examples/vectoradd_jax/test_cases/example_jacobian_input.json @@ -0,0 +1,39 @@ +{ + "inputs": { + "a": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "AQAAAAAAAAACAAAAAAAAAAMAAAAAAAAA", + "encoding": "base64" + } + }, + "s": 2 + }, + "b": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "BAAAAAAAAAAFAAAAAAAAAAYAAAAAAAAA", + "encoding": "base64" + } + }, + "s": 1 + } + }, + "jac_inputs": [ + "a.s", + "a.v" + ], + "jac_outputs": [ + "vector_add.result" + ] +} diff --git a/examples/vectoradd_jax/test_cases/wrtScalar_jvp_input.json b/examples/vectoradd_jax/test_cases/wrtScalar_jvp_input.json new file mode 100644 index 00000000..c9a20b56 --- /dev/null +++ b/examples/vectoradd_jax/test_cases/wrtScalar_jvp_input.json @@ -0,0 +1,41 @@ +{ + "inputs": { + "a": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "AQAAAAAAAAACAAAAAAAAAAMAAAAAAAAA", + "encoding": "base64" + } + }, + "s": 2 + }, + "b": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "BAAAAAAAAAAFAAAAAAAAAAYAAAAAAAAA", + "encoding": "base64" + } + }, + "s": 1 + } + }, + "jvp_inputs": [ + "a.s" + ], + "jvp_outputs": [ + "vector_add.result" + ], + "tangent_vector": { + "a.s": 0.5 + } +} diff --git a/examples/vectoradd_jax/test_cases/wrtScalar_vjp_input.json b/examples/vectoradd_jax/test_cases/wrtScalar_vjp_input.json new file mode 100644 index 00000000..322bdbb6 --- /dev/null +++ b/examples/vectoradd_jax/test_cases/wrtScalar_vjp_input.json @@ -0,0 +1,51 @@ +{ + "inputs": { + "a": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "float64", + "data": { + "buffer": "AAAAAAAA8D8AAAAAAAAAQAAAAAAAAAhA", + "encoding": "base64" + } + }, + "s": 2 + }, + "b": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "float64", + "data": { + "buffer": "AAAAAAAAEEAAAAAAAAAUQAAAAAAAABhA", + "encoding": "base64" + } + }, + "s": 1 + } + }, + "vjp_inputs": [ + "a.s" + ], + "vjp_outputs": [ + "vector_add.result" + ], + "cotangent_vector": { + "vector_add.result": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "float64", + "data": { + "buffer": "mpmZmZmZuT+amZmZmZnJPzMzMzMzM9M/", + "encoding": "base64" + } + } + } +} diff --git a/examples/vectoradd_jax/test_cases/wrtVector_jvp_input.json b/examples/vectoradd_jax/test_cases/wrtVector_jvp_input.json new file mode 100644 index 00000000..2bfae7ed --- /dev/null +++ b/examples/vectoradd_jax/test_cases/wrtVector_jvp_input.json @@ -0,0 +1,51 @@ +{ + "inputs": { + "a": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "AQAAAAAAAAACAAAAAAAAAAMAAAAAAAAA", + "encoding": "base64" + } + }, + "s": 2 + }, + "b": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "BAAAAAAAAAAFAAAAAAAAAAYAAAAAAAAA", + "encoding": "base64" + } + }, + "s": 1 + } + }, + "jvp_inputs": [ + "a.v" + ], + "jvp_outputs": [ + "vector_add.result" + ], + "tangent_vector": { + "a.v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "float64", + "data": { + "buffer": "mpmZmZmZuT+amZmZmZnJPzMzMzMzM9M/", + "encoding": "base64" + } + } + } +} diff --git a/examples/vectoradd_jax/test_cases/wrtVector_vjp_input.json b/examples/vectoradd_jax/test_cases/wrtVector_vjp_input.json new file mode 100644 index 00000000..67486e18 --- /dev/null +++ b/examples/vectoradd_jax/test_cases/wrtVector_vjp_input.json @@ -0,0 +1,51 @@ +{ + "inputs": { + "a": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "float64", + "data": { + "buffer": "AAAAAAAA8D8AAAAAAAAAQAAAAAAAAAhA", + "encoding": "base64" + } + }, + "s": 2 + }, + "b": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "float64", + "data": { + "buffer": "AAAAAAAAEEAAAAAAAAAUQAAAAAAAABhA", + "encoding": "base64" + } + }, + "s": 1 + } + }, + "vjp_inputs": [ + "a.v" + ], + "vjp_outputs": [ + "vector_add.result" + ], + "cotangent_vector": { + "vector_add.result": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "float64", + "data": { + "buffer": "mpmZmZmZuT+amZmZmZnJPzMzMzMzM9M/", + "encoding": "base64" + } + } + } +} diff --git a/examples/vectoradd_torch/test_cases/bad_input.json b/examples/vectoradd_torch/test_cases/bad_input.json new file mode 100644 index 00000000..6f05c9d1 --- /dev/null +++ b/examples/vectoradd_torch/test_cases/bad_input.json @@ -0,0 +1,3 @@ +{ + "inputs": {} +} diff --git a/examples/vectoradd_torch/test_cases/example_input.json b/examples/vectoradd_torch/test_cases/example_input.json new file mode 100644 index 00000000..82163d91 --- /dev/null +++ b/examples/vectoradd_torch/test_cases/example_input.json @@ -0,0 +1,32 @@ +{ + "inputs": { + "a": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "AQAAAAAAAAACAAAAAAAAAAMAAAAAAAAA", + "encoding": "base64" + } + }, + "s": 3 + }, + "b": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "BAAAAAAAAAAFAAAAAAAAAAYAAAAAAAAA", + "encoding": "base64" + } + }, + "s": 1 + } + } +} diff --git a/examples/vectoradd_torch/test_cases/example_jacobian_input.json b/examples/vectoradd_torch/test_cases/example_jacobian_input.json new file mode 100644 index 00000000..34187f53 --- /dev/null +++ b/examples/vectoradd_torch/test_cases/example_jacobian_input.json @@ -0,0 +1,39 @@ +{ + "inputs": { + "a": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "AQAAAAAAAAACAAAAAAAAAAMAAAAAAAAA", + "encoding": "base64" + } + }, + "s": 2 + }, + "b": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "BAAAAAAAAAAFAAAAAAAAAAYAAAAAAAAA", + "encoding": "base64" + } + }, + "s": 1 + } + }, + "jac_inputs": [ + "a.s", + "a.v" + ], + "jac_outputs": [ + "vector_add.result" + ] +} diff --git a/examples/vectoradd_torch/test_cases/wrtScalar_jvp_input.json b/examples/vectoradd_torch/test_cases/wrtScalar_jvp_input.json new file mode 100644 index 00000000..c9a20b56 --- /dev/null +++ b/examples/vectoradd_torch/test_cases/wrtScalar_jvp_input.json @@ -0,0 +1,41 @@ +{ + "inputs": { + "a": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "AQAAAAAAAAACAAAAAAAAAAMAAAAAAAAA", + "encoding": "base64" + } + }, + "s": 2 + }, + "b": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "BAAAAAAAAAAFAAAAAAAAAAYAAAAAAAAA", + "encoding": "base64" + } + }, + "s": 1 + } + }, + "jvp_inputs": [ + "a.s" + ], + "jvp_outputs": [ + "vector_add.result" + ], + "tangent_vector": { + "a.s": 0.5 + } +} diff --git a/examples/vectoradd_torch/test_cases/wrtScalar_vjp_input.json b/examples/vectoradd_torch/test_cases/wrtScalar_vjp_input.json new file mode 100644 index 00000000..322bdbb6 --- /dev/null +++ b/examples/vectoradd_torch/test_cases/wrtScalar_vjp_input.json @@ -0,0 +1,51 @@ +{ + "inputs": { + "a": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "float64", + "data": { + "buffer": "AAAAAAAA8D8AAAAAAAAAQAAAAAAAAAhA", + "encoding": "base64" + } + }, + "s": 2 + }, + "b": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "float64", + "data": { + "buffer": "AAAAAAAAEEAAAAAAAAAUQAAAAAAAABhA", + "encoding": "base64" + } + }, + "s": 1 + } + }, + "vjp_inputs": [ + "a.s" + ], + "vjp_outputs": [ + "vector_add.result" + ], + "cotangent_vector": { + "vector_add.result": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "float64", + "data": { + "buffer": "mpmZmZmZuT+amZmZmZnJPzMzMzMzM9M/", + "encoding": "base64" + } + } + } +} diff --git a/examples/vectoradd_torch/test_cases/wrtVector_jvp_input.json b/examples/vectoradd_torch/test_cases/wrtVector_jvp_input.json new file mode 100644 index 00000000..2bfae7ed --- /dev/null +++ b/examples/vectoradd_torch/test_cases/wrtVector_jvp_input.json @@ -0,0 +1,51 @@ +{ + "inputs": { + "a": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "AQAAAAAAAAACAAAAAAAAAAMAAAAAAAAA", + "encoding": "base64" + } + }, + "s": 2 + }, + "b": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "int64", + "data": { + "buffer": "BAAAAAAAAAAFAAAAAAAAAAYAAAAAAAAA", + "encoding": "base64" + } + }, + "s": 1 + } + }, + "jvp_inputs": [ + "a.v" + ], + "jvp_outputs": [ + "vector_add.result" + ], + "tangent_vector": { + "a.v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "float64", + "data": { + "buffer": "mpmZmZmZuT+amZmZmZnJPzMzMzMzM9M/", + "encoding": "base64" + } + } + } +} diff --git a/examples/vectoradd_torch/test_cases/wrtVector_vjp_input.json b/examples/vectoradd_torch/test_cases/wrtVector_vjp_input.json new file mode 100644 index 00000000..67486e18 --- /dev/null +++ b/examples/vectoradd_torch/test_cases/wrtVector_vjp_input.json @@ -0,0 +1,51 @@ +{ + "inputs": { + "a": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "float64", + "data": { + "buffer": "AAAAAAAA8D8AAAAAAAAAQAAAAAAAAAhA", + "encoding": "base64" + } + }, + "s": 2 + }, + "b": { + "v": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "float64", + "data": { + "buffer": "AAAAAAAAEEAAAAAAAAAUQAAAAAAAABhA", + "encoding": "base64" + } + }, + "s": 1 + } + }, + "vjp_inputs": [ + "a.v" + ], + "vjp_outputs": [ + "vector_add.result" + ], + "cotangent_vector": { + "vector_add.result": { + "object_type": "array", + "shape": [ + 3 + ], + "dtype": "float64", + "data": { + "buffer": "mpmZmZmZuT+amZmZmZnJPzMzMzMzM9M/", + "encoding": "base64" + } + } + } +} diff --git a/tests/endtoend_tests/test_examples.py b/tests/endtoend_tests/test_examples.py index fe2670d6..5f7adbd2 100644 --- a/tests/endtoend_tests/test_examples.py +++ b/tests/endtoend_tests/test_examples.py @@ -21,6 +21,8 @@ import requests from common import build_tesseract, encode_array, image_exists +EXAMPLES_DIR = Path(__file__).parent.parent.parent / "examples" + def json_normalize(obj: str): """Normalize JSON str for comparison.""" @@ -147,60 +149,53 @@ class Config: sample_requests=[ SampleRequest( endpoint="apply", - payload={ - "inputs": { - "a": encode_array([1, 2, 3]), - "b": encode_array([4, 5, 6]), - }, - }, + payload=json.loads( + ( + EXAMPLES_DIR / "vectoradd/test_cases/example_input.json" + ).read_text() + ), output_contains_pattern=[encode_array([5.0, 7.0, 9.0], as_json=True)], ), SampleRequest( endpoint="jacobian", - payload={ - "inputs": { - "a": encode_array([1, 2, 3]), - "b": encode_array([4, 5, 6]), - }, - "jac_inputs": ["s", "a"], - "jac_outputs": ["result"], - }, + payload=json.loads( + ( + EXAMPLES_DIR + / "vectoradd/test_cases/example_jacobian_input.json" + ).read_text() + ), output_contains_pattern=['"s":', '"a":'], ), SampleRequest( endpoint="jacobian", - payload={ - "inputs": { - "a": encode_array([1, 2, 3]), - "b": encode_array([4, 5, 6]), - }, - "jac_inputs": ["invalid", "inputs"], - "jac_outputs": ["result"], - }, + payload=json.loads( + ( + EXAMPLES_DIR + / "vectoradd/test_cases/badInputs_jacobian_input.json" + ).read_text() + ), expected_status_code=422, output_contains_pattern="Input should be", ), SampleRequest( endpoint="jacobian", - payload={ - "inputs": { - "a": encode_array([1, 2, 3]), - "b": encode_array([4, 5, 6]), - }, - "jac_inputs": ["s", "a"], - "jac_outputs": ["invalid", "outputs"], - }, + payload=json.loads( + ( + EXAMPLES_DIR + / "vectoradd/test_cases/badOutputs_jacobian_input.json" + ).read_text() + ), expected_status_code=422, output_contains_pattern="Input should be", ), SampleRequest( endpoint="check-gradients", - payload={ - "inputs": { - "a": encode_array([1, 2, 3]), - "b": encode_array([4, 5, 6]), - }, - }, + payload=json.loads( + ( + EXAMPLES_DIR + / "vectoradd/test_cases/example_checkgradients_input.json" + ).read_text() + ), ), ], ), @@ -209,112 +204,91 @@ class Config: sample_requests=[ SampleRequest( endpoint="apply", - payload={ - "inputs": { - "a": {"v": encode_array([1, 2, 3]), "s": 3}, - "b": {"v": encode_array([4, 5, 6]), "s": 1}, - }, - }, + payload=json.loads( + ( + EXAMPLES_DIR / "vectoradd_jax/test_cases/example_input.json" + ).read_text() + ), output_contains_array=np.array([7.0, 11.0, 15.0], dtype="float32"), ), SampleRequest( endpoint="abstract_eval", - payload={ - "inputs": { - "a": { - "v": {"shape": [3], "dtype": "float32"}, - "s": {"shape": [], "dtype": "float32"}, - }, - "b": { - "v": {"shape": [3], "dtype": "float32"}, - "s": {"shape": [], "dtype": "float32"}, - }, - } - }, + payload=json.loads( + ( + EXAMPLES_DIR + / "vectoradd_jax/test_cases/example_abstract_input.json" + ).read_text() + ), ), SampleRequest( endpoint="apply", - payload={"inputs": {}}, + payload=json.loads( + ( + EXAMPLES_DIR / "vectoradd_jax/test_cases/bad_input.json" + ).read_text() + ), expected_status_code=422, output_contains_pattern="missing", ), SampleRequest( endpoint="jacobian", - payload={ - "inputs": { - "a": {"v": encode_array([1, 2, 3]), "s": 2}, - "b": {"v": encode_array([4, 5, 6]), "s": 1}, - }, - "jac_inputs": ["a.s", "a.v"], - "jac_outputs": ["vector_add.result"], - }, + payload=json.loads( + ( + EXAMPLES_DIR + / "vectoradd_jax/test_cases/example_jacobian_input.json" + ).read_text() + ), output_contains_pattern=['"a.s":', '"a.v":'], output_contains_array=np.array([[1, 2, 3]], dtype="float32"), ), SampleRequest( endpoint="jacobian_vector_product", - payload={ - "inputs": { - "a": {"v": encode_array([1, 2, 3]), "s": 2}, - "b": {"v": encode_array([4, 5, 6]), "s": 1}, - }, - "jvp_inputs": ["a.v"], - "jvp_outputs": ["vector_add.result"], - "tangent_vector": {"a.v": encode_array([0.1, 0.2, 0.3])}, - }, + payload=json.loads( + ( + EXAMPLES_DIR + / "vectoradd_jax/test_cases/wrtVector_jvp_input.json" + ).read_text() + ), output_contains_array=np.array([0.2, 0.4, 0.6], dtype="float32"), ), SampleRequest( endpoint="jacobian_vector_product", - payload={ - "inputs": { - "a": {"v": encode_array([1, 2, 3]), "s": 2}, - "b": {"v": encode_array([4, 5, 6]), "s": 1}, - }, - "jvp_inputs": ["a.s"], - "jvp_outputs": ["vector_add.result"], - "tangent_vector": {"a.s": 0.5}, - }, + payload=json.loads( + ( + EXAMPLES_DIR + / "vectoradd_jax/test_cases/wrtScalar_jvp_input.json" + ).read_text() + ), output_contains_array=np.array([0.5, 1.0, 1.5], dtype="float32"), ), SampleRequest( endpoint="vector_jacobian_product", - payload={ - "inputs": { - "a": {"v": encode_array([1.0, 2.0, 3.0]), "s": 2}, - "b": {"v": encode_array([4.0, 5.0, 6.0]), "s": 1}, - }, - "vjp_inputs": ["a.v"], - "vjp_outputs": ["vector_add.result"], - "cotangent_vector": { - "vector_add.result": encode_array([0.1, 0.2, 0.3]), - }, - }, + payload=json.loads( + ( + EXAMPLES_DIR + / "vectoradd_jax/test_cases/wrtVector_vjp_input.json" + ).read_text() + ), output_contains_array=np.array([0.2, 0.4, 0.6], dtype="float32"), ), SampleRequest( endpoint="vector_jacobian_product", - payload={ - "inputs": { - "a": {"v": encode_array([1.0, 2.0, 3.0]), "s": 2}, - "b": {"v": encode_array([4.0, 5.0, 6.0]), "s": 1}, - }, - "vjp_inputs": ["a.s"], - "vjp_outputs": ["vector_add.result"], - "cotangent_vector": { - "vector_add.result": encode_array([0.1, 0.2, 0.3]), - }, - }, + payload=json.loads( + ( + EXAMPLES_DIR + / "vectoradd_jax/test_cases/wrtScalar_vjp_input.json" + ).read_text() + ), output_contains_array=np.array([1.4], dtype="float32"), ), SampleRequest( endpoint="check-gradients", - payload={ - "inputs": { - "a": {"v": encode_array([1, 2, 3]), "s": 2}, - "b": {"v": encode_array([4, 5, 6]), "s": 1}, - }, - }, + payload=json.loads( + ( + EXAMPLES_DIR + / "vectoradd_jax/test_cases/example_checkgradients_input.json" + ).read_text() + ), ), ], ), @@ -323,87 +297,72 @@ class Config: sample_requests=[ SampleRequest( endpoint="apply", - payload={ - "inputs": { - "a": {"v": encode_array([1, 2, 3]), "s": 3}, - "b": {"v": encode_array([4, 5, 6]), "s": 1}, - }, - }, + payload=json.loads( + ( + EXAMPLES_DIR / "vectoradd_torch/test_cases/example_input.json" + ).read_text() + ), output_contains_array=np.array([7.0, 11.0, 15.0], dtype="float32"), ), SampleRequest( endpoint="apply", - payload={"inputs": {}}, + payload=json.loads( + ( + EXAMPLES_DIR / "vectoradd_torch/test_cases/bad_input.json" + ).read_text() + ), expected_status_code=422, output_contains_pattern="missing", ), SampleRequest( endpoint="jacobian", - payload={ - "inputs": { - "a": {"v": encode_array([1, 2, 3]), "s": 2}, - "b": {"v": encode_array([4, 5, 6]), "s": 1}, - }, - "jac_inputs": ["a.s", "a.v"], - "jac_outputs": ["vector_add.result"], - }, + payload=json.loads( + ( + EXAMPLES_DIR + / "vectoradd_torch/test_cases/example_jacobian_input.json" + ).read_text() + ), output_contains_pattern=['"a.s":', '"a.v":'], output_contains_array=np.array([[1, 2, 3]], dtype="float32"), ), SampleRequest( endpoint="jacobian_vector_product", - payload={ - "inputs": { - "a": {"v": encode_array([1, 2, 3]), "s": 2}, - "b": {"v": encode_array([4, 5, 6]), "s": 1}, - }, - "jvp_inputs": ["a.v"], - "jvp_outputs": ["vector_add.result"], - "tangent_vector": {"a.v": encode_array([0.1, 0.2, 0.3])}, - }, + payload=json.loads( + ( + EXAMPLES_DIR + / "vectoradd_torch/test_cases/wrtVector_jvp_input.json" + ).read_text() + ), output_contains_array=np.array([0.2, 0.4, 0.6], dtype="float32"), ), SampleRequest( endpoint="jacobian_vector_product", - payload={ - "inputs": { - "a": {"v": encode_array([1, 2, 3]), "s": 2}, - "b": {"v": encode_array([4, 5, 6]), "s": 1}, - }, - "jvp_inputs": ["a.s"], - "jvp_outputs": ["vector_add.result"], - "tangent_vector": {"a.s": 0.5}, - }, + payload=json.loads( + ( + EXAMPLES_DIR + / "vectoradd_torch/test_cases/wrtScalar_jvp_input.json" + ).read_text() + ), output_contains_array=np.array([0.5, 1.0, 1.5], dtype="float32"), ), SampleRequest( endpoint="vector_jacobian_product", - payload={ - "inputs": { - "a": {"v": encode_array([1.0, 2.0, 3.0]), "s": 2}, - "b": {"v": encode_array([4.0, 5.0, 6.0]), "s": 1}, - }, - "vjp_inputs": ["a.v"], - "vjp_outputs": ["vector_add.result"], - "cotangent_vector": { - "vector_add.result": encode_array([0.1, 0.2, 0.3]), - }, - }, + payload=json.loads( + ( + EXAMPLES_DIR + / "vectoradd_torch/test_cases/wrtVector_vjp_input.json" + ).read_text() + ), output_contains_array=np.array([0.2, 0.4, 0.6], dtype="float32"), ), SampleRequest( endpoint="vector_jacobian_product", - payload={ - "inputs": { - "a": {"v": encode_array([1.0, 2.0, 3.0]), "s": 2}, - "b": {"v": encode_array([4.0, 5.0, 6.0]), "s": 1}, - }, - "vjp_inputs": ["a.s"], - "vjp_outputs": ["vector_add.result"], - "cotangent_vector": { - "vector_add.result": encode_array([0.1, 0.2, 0.3]), - }, - }, + payload=json.loads( + ( + EXAMPLES_DIR + / "vectoradd_torch/test_cases/wrtScalar_vjp_input.json" + ).read_text() + ), output_contains_array=np.array([1.4], dtype="float32"), ), ], @@ -413,61 +372,61 @@ class Config: sample_requests=[ SampleRequest( endpoint="apply", - payload={ - "inputs": {"x": 0.0, "y": 0.0}, - }, + payload=json.loads( + ( + EXAMPLES_DIR / "univariate/test_cases/example_input.json" + ).read_text() + ), output_contains_array=np.array([1.0], dtype="float64"), ), SampleRequest( endpoint="jacobian", - payload={ - "inputs": {"x": 0.0, "y": 0.0}, - "jac_inputs": ["x"], - "jac_outputs": ["result"], - }, + payload=json.loads( + ( + EXAMPLES_DIR / "univariate/test_cases/wrtX_jacobian_input.json" + ).read_text() + ), output_contains_pattern=[ f'"result":{{"x":{encode_array(np.float32(-2.0), as_json=True)}}}' ], ), SampleRequest( endpoint="jacobian", - payload={ - "inputs": {"x": 0.0, "y": 0.0}, - "jac_inputs": ["y"], - "jac_outputs": ["result"], - }, + payload=json.loads( + ( + EXAMPLES_DIR / "univariate/test_cases/wrtY_jacobian_input.json" + ).read_text() + ), output_contains_pattern=[ f'"result":{{"y":{encode_array(np.float32(0.0), as_json=True)}}}' ], ), SampleRequest( endpoint="jacobian", - payload={ - "inputs": {"x": 0.0, "y": 0.0}, - "jac_inputs": ["hey"], - "jac_outputs": ["result"], - }, + payload=json.loads( + ( + EXAMPLES_DIR / "univariate/test_cases/bad_jacobian_input.json" + ).read_text() + ), expected_status_code=422, output_contains_pattern="Input should be", ), SampleRequest( endpoint="jacobian_vector_product", - payload={ - "inputs": {"x": 0.0, "y": 0.0}, - "jvp_inputs": ["x", "y"], - "jvp_outputs": ["result"], - "tangent_vector": {"x": 1.0, "y": 0.0}, - }, + payload=json.loads( + ( + EXAMPLES_DIR / "univariate/test_cases/example_jvp_input.json" + ).read_text() + ), output_contains_pattern=f'"result":{encode_array(np.float32(-2.0), as_json=True)}', ), SampleRequest( endpoint="vector_jacobian_product", - payload={ - "inputs": {"x": 0.0, "y": 0.0}, - "vjp_inputs": ["x", "y"], - "vjp_outputs": ["result"], - "cotangent_vector": {"result": 1.0}, - }, + payload=json.loads( + ( + EXAMPLES_DIR / "univariate/test_cases/example_vjp_input.json" + ).read_text() + ), output_contains_pattern=[ f'"x":{encode_array(np.float32(-2.0), as_json=True)}', f'"y":{encode_array(np.float32(0.0), as_json=True)}', @@ -475,9 +434,12 @@ class Config: ), SampleRequest( endpoint="check-gradients", - payload={ - "inputs": {"x": 0.0, "y": 0.0}, - }, + payload=json.loads( + ( + EXAMPLES_DIR + / "univariate/test_cases/example_checkgradients_input.json" + ).read_text() + ), ), ], ), @@ -492,197 +454,43 @@ class Config: sample_requests=[ SampleRequest( endpoint="apply", - payload={ - "inputs": { - "mesh": { - "n_points": 5, - "n_cells": 2, - "points": encode_array( - [ - [0.0, 666.0, 0.0], - [1.0, 0.0, 0.0], - [0.0, 1.0, 0.0], - [1.0, 1.0, 0.0], - [0.5, 0.5, 1.0], - ] - ), - "num_points_per_cell": encode_array([4, 4]), - "cell_connectivity": encode_array([0, 1, 2, 3, 1, 2, 3, 4]), - "cell_data": { - "temperature": encode_array( - [[100.0, 105.0], [110.0, 115.0]] - ), - "pressure": encode_array([[1.0, 1.2], [1.1, 1.3]]), - }, - "point_data": { - "displacement": encode_array( - [ - [0.0, 0.1, 0.2], - [0.1, 0.0, 0.2], - [0.2, 0.1, 0.0], - [0.1, 0.2, 0.1], - [0.2, 0.1, 0.1], - ] - ), - "velocity": encode_array( - [ - [0.0, 0.0, 0.0], - [0.1, 0.0, 0.0], - [0.0, 0.1, 0.0], - [0.0, 0.0, 0.1], - [0.1, 0.1, 0.1], - ] - ), - }, - } - }, - }, + payload=json.loads( + ( + EXAMPLES_DIR / "meshstats/test_cases/example_input.json" + ).read_text() + ), output_contains_pattern=encode_array( np.array([0.0, 666.0, 0.0], dtype="float32"), as_json=True ), ), SampleRequest( endpoint="abstract_eval", - payload={ - "inputs": { - "mesh": { - "n_points": 5, - "n_cells": 8, - "points": { - "shape": [5, 3], - "dtype": "float32", - }, - "num_points_per_cell": { - "shape": [2], - "dtype": "int32", - }, - "cell_connectivity": { - "shape": [8], - "dtype": "int32", - }, - "cell_data": { - "temperature": { - "shape": [2, 2], - "dtype": "float32", - }, - "pressure": { - "shape": [2, 2], - "dtype": "float32", - }, - }, - "point_data": { - "displacement": { - "shape": [5, 3], - "dtype": "float32", - }, - "velocity": { - "shape": [5, 3], - "dtype": "float32", - }, - }, - } - }, - }, + payload=json.loads( + ( + EXAMPLES_DIR + / "meshstats/test_cases/example_abstract_input.json" + ).read_text() + ), output_contains_pattern='"shape":[3],"dtype":"float32"', ), SampleRequest( endpoint="jacobian", - payload={ - "jac_inputs": ["mesh.points"], - "jac_outputs": ["statistics.barycenter"], - "inputs": { - "mesh": { - "n_points": 5, - "n_cells": 2, - "points": encode_array( - [ - [0.0, 666.0, 0.0], - [1.0, 0.0, 0.0], - [0.0, 1.0, 0.0], - [1.0, 1.0, 0.0], - [0.5, 0.5, 1.0], - ] - ), - "num_points_per_cell": encode_array([4, 4]), - "cell_connectivity": encode_array([0, 1, 2, 3, 1, 2, 3, 4]), - "cell_data": { - "temperature": encode_array( - [[100.0, 105.0], [110.0, 115.0]] - ), - "pressure": encode_array([[1.0, 1.2], [1.1, 1.3]]), - }, - "point_data": { - "displacement": encode_array( - [ - [0.0, 0.1, 0.2], - [0.1, 0.0, 0.2], - [0.2, 0.1, 0.0], - [0.1, 0.2, 0.1], - [0.2, 0.1, 0.1], - ] - ), - "velocity": encode_array( - [ - [0.0, 0.0, 0.0], - [0.1, 0.0, 0.0], - [0.0, 0.1, 0.0], - [0.0, 0.0, 0.1], - [0.1, 0.1, 0.1], - ] - ), - }, - } - }, - }, + payload=json.loads( + ( + EXAMPLES_DIR + / "meshstats/test_cases/example_jacobian_input.json" + ).read_text() + ), output_contains_pattern='"shape":[3,5,3]', ), SampleRequest( endpoint="check-gradients", - payload={ - "inputs": { - "mesh": { - "n_points": 5, - "n_cells": 2, - "points": encode_array( - [ - [0.0, 2.0, 0.0], - [1.0, 0.0, 0.0], - [0.0, 1.0, 0.0], - [1.0, 1.0, 0.0], - [0.5, 0.5, 1.0], - ] - ), - "num_points_per_cell": encode_array([4, 4]), - "cell_connectivity": encode_array([0, 1, 2, 3, 1, 2, 3, 4]), - "cell_data": { - "temperature": encode_array( - [[100.0, 105.0], [110.0, 115.0]] - ), - "pressure": encode_array([[1.0, 1.2], [1.1, 1.3]]), - }, - "point_data": { - "displacement": encode_array( - [ - [0.0, 0.1, 0.2], - [0.1, 0.0, 0.2], - [0.2, 0.1, 0.0], - [0.1, 0.2, 0.1], - [0.2, 0.1, 0.1], - ] - ), - "velocity": encode_array( - [ - [0.0, 0.0, 0.0], - [0.1, 0.0, 0.0], - [0.0, 0.1, 0.0], - [0.0, 0.0, 0.1], - [0.1, 0.1, 0.1], - ] - ), - }, - } - }, - }, + payload=json.loads( + ( + EXAMPLES_DIR + / "meshstats/test_cases/example_checkgradients_input.json" + ).read_text() + ), ), ], ),