diff --git a/.gitignore b/.gitignore index 50b963e817..f01e567c10 100644 --- a/.gitignore +++ b/.gitignore @@ -273,6 +273,7 @@ pycode/build_pylint/ # Automatic generated python code pycode/memilio-simulation-stubs/ +pycode/memilio-generation/memilio/tools/config.json # Credentials for data download pycode/memilio-epidata/memilio/epidata/CredentialsRegio.ini diff --git a/docs/source/python/m-bindingsgenerator.rst b/docs/source/python/m-bindingsgenerator.rst index 49aaedb5b7..e61aa0c78e 100644 --- a/docs/source/python/m-bindingsgenerator.rst +++ b/docs/source/python/m-bindingsgenerator.rst @@ -94,7 +94,7 @@ Development When implementing new model features you can follow these steps: -* Add necessary configurations to `config.json.txt `_ and add corresponding attributes to the ``ScannerConfig``. +* Add necessary configurations to `config.json.txt `_ and add corresponding attributes to the ``ScannerConfig``. * For the features you want to implement, find the nodes in the abstract syntax tree (AST) (use method Scanner.output_ast_file(); see the example in tools/). * Add the extraction of those features. Therefore, you need to change the "check\_..."-methods corresponding to the ``CursorKind`` of your nodes in the ``Scanner``. If there is no corresponding "check\_..."-method you need to write a new one and add it to the switch-method (``scanner.switch_node_kind()``). * Extend the ``IntermediateRepresentation`` for the new model features. diff --git a/pycode/memilio-generation/CMakeLists.txt b/pycode/memilio-generation/CMakeLists.txt index 5259ed57d6..ebccbd768f 100644 --- a/pycode/memilio-generation/CMakeLists.txt +++ b/pycode/memilio-generation/CMakeLists.txt @@ -16,4 +16,4 @@ add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../../cpp ${CMAKE_CURRENT_BINARY_DI FIND_LIBRARY(LIBCLANG_PATH clang HINTS ${CMAKE_CXX_COMPILER}/../../ ) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/memilio/tools/config.json.txt ${CMAKE_CURRENT_SOURCE_DIR}/memilio/tools/config.json) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/memilio/generation/config.json.txt ${CMAKE_CURRENT_SOURCE_DIR}/memilio/generation/config.json) diff --git a/pycode/memilio-generation/README.md b/pycode/memilio-generation/README.md index 9cd4d30dc2..9d6749260c 100644 --- a/pycode/memilio-generation/README.md +++ b/pycode/memilio-generation/README.md @@ -35,7 +35,7 @@ pip install . ## Usage -The package provides an example script and README on how to use it in `memilio/tools`. The example uses the ode_seir model from the [C++ Library](../../cpp/models/ode_seir/README.md). +The package provides an [example script](./memilio/generation/example_oseir.py) and [README](./memilio/generation/README.md). The example uses the ode_seir model from the [C++ Library](../../cpp/models/ode_seir/README.md). You can print the AST of your model into a file (Usefull for development/debugging). diff --git a/pycode/memilio-generation/memilio/tools/README.md b/pycode/memilio-generation/memilio/generation/README.md similarity index 100% rename from pycode/memilio-generation/memilio/tools/README.md rename to pycode/memilio-generation/memilio/generation/README.md diff --git a/pycode/memilio-generation/memilio/tools/config.json.txt b/pycode/memilio-generation/memilio/generation/config.json.txt similarity index 100% rename from pycode/memilio-generation/memilio/tools/config.json.txt rename to pycode/memilio-generation/memilio/generation/config.json.txt diff --git a/pycode/memilio-generation/memilio/tools/config.json b/pycode/memilio-generation/memilio/tools/config.json deleted file mode 100644 index ebbd703d5e..0000000000 --- a/pycode/memilio-generation/memilio/tools/config.json +++ /dev/null @@ -1,35 +0,0 @@ -[ - { - "source_file": "/home/rich_dn/repos/memilio/cpp/models/ode_seir/model.cpp", - "namespace": "mio::oseir::", - "python_module_name": "oseir", - "python_generation_module_path": "/home/rich_dn/repos/memilio/pycode/memilio-generation/../memilio-generation", - "skbuild_path_to_database": "/home/rich_dn/repos/memilio/pycode/memilio-generation/_skbuild/linux-x86_64-3.10/cmake-build", - "target_folder": "/home/rich_dn/repos/memilio/pycode/memilio-generation/../memilio-generation/memilio/tools", - "optional": { - "libclang_library_path": "/tools/modulesystem/spack-22.2/opt/spack/linux-ubuntu20.04-x86_64_v3/gcc-9.4.0/llvm-14.0.6-u6u3nxayshaogte7pdnas4i6h4ta5ymi/lib/libclang.so" - } - }, - { - "source_file": "/home/rich_dn/repos/memilio/cpp/models/ode_secir/model.cpp", - "namespace": "mio::osecir::", - "python_module_name": "osecir", - "python_generation_module_path": "/home/rich_dn/repos/memilio/pycode/memilio-generation/../memilio-generation", - "skbuild_path_to_database": "/home/rich_dn/repos/memilio/pycode/memilio-generation/_skbuild/linux-x86_64-3.10/cmake-build", - "target_folder": "/home/rich_dn/repos/memilio/pycode/memilio-generation/../memilio-generation/memilio/tools", - "optional": { - "libclang_library_path": "/tools/modulesystem/spack-22.2/opt/spack/linux-ubuntu20.04-x86_64_v3/gcc-9.4.0/llvm-14.0.6-u6u3nxayshaogte7pdnas4i6h4ta5ymi/lib/libclang.so" - } - }, - { - "source_file": "/home/rich_dn/repos/memilio/cpp/models/ode_secirvvs/model.cpp", - "namespace": "mio::osecirvvs::", - "python_module_name": "osecirvvs", - "python_generation_module_path": "/home/rich_dn/repos/memilio/pycode/memilio-generation/../memilio-generation", - "skbuild_path_to_database": "/home/rich_dn/repos/memilio/pycode/memilio-generation/_skbuild/linux-x86_64-3.10/cmake-build", - "target_folder": "/home/rich_dn/repos/memilio/pycode/memilio-generation/../memilio-generation/memilio/tools", - "optional": { - "libclang_library_path": "/tools/modulesystem/spack-22.2/opt/spack/linux-ubuntu20.04-x86_64_v3/gcc-9.4.0/llvm-14.0.6-u6u3nxayshaogte7pdnas4i6h4ta5ymi/lib/libclang.so" - } - } -] diff --git a/pycode/memilio-generation/memilio/tools/example_oseir.py b/pycode/memilio-generation/memilio/tools/example_oseir.py index f3b7b8c30a..ca3622edbf 100644 --- a/pycode/memilio-generation/memilio/tools/example_oseir.py +++ b/pycode/memilio-generation/memilio/tools/example_oseir.py @@ -38,7 +38,7 @@ def run_memilio_generation(print_ast=False): """ # Define ScannerConfig and initialize Scanner pkg = importlib_resources.files("memilio.generation") - with importlib_resources.as_file(pkg.joinpath('../tools/config.json')) as path: + with importlib_resources.as_file(pkg.joinpath('../generation/config.json')) as path: with open(path) as file: conf = ScannerConfig.schema().loads(file.read(), many=True)[0] diff --git a/pycode/memilio-generation/pyproject.toml b/pycode/memilio-generation/pyproject.toml index d99b3cb8dd..5eb873cf34 100644 --- a/pycode/memilio-generation/pyproject.toml +++ b/pycode/memilio-generation/pyproject.toml @@ -49,5 +49,5 @@ build-dir = "../build/memilio-generation" include-package-data = true [tool.setuptools.package-data] -"memilio.generation" = ["tools/*.json", "tools/*.txt", "tools/README.md"] +"memilio.generation" = ["generation/*.json", "generation/*.txt", "generation/README.md"] "memilio.modelgenerator" = ["templates/*.jinja2"]