.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "_examples/generative_design_ex/00-generative_design_model_build.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr__examples_generative_design_ex_00-generative_design_model_build.py: .. _ref_generative_design_model_build_reuse: Script 1 - Building a model to generate new designs =================================================== This example demonstrates how to configure, train and build a model that will generate new designs. .. GENERATED FROM PYTHON SOURCE LINES 11-13 Import necessary libraries -------------------------- .. GENERATED FROM PYTHON SOURCE LINES 13-20 .. code-block:: Python import os import ansys.simai.core from ansys.simai.core.data.geomai.models import GeomAIModelConfiguration from ansys.simai.core.errors import NotFoundError .. GENERATED FROM PYTHON SOURCE LINES 21-25 Create the client ----------------- Create a client to use the PySimAI library. This client will be the entrypoint of all "SimAI" and "GeomAI" objects. .. GENERATED FROM PYTHON SOURCE LINES 25-28 .. code-block:: Python simai = ansys.simai.core.SimAIClient(organization="my_organization") .. GENERATED FROM PYTHON SOURCE LINES 29-33 Configure the client -------------------- Generative design objects are not part of a separate client to instantiate — they are exposed via the `geomai` property of a configured SimAIClient. .. GENERATED FROM PYTHON SOURCE LINES 33-37 .. code-block:: Python client = simai.geomai .. GENERATED FROM PYTHON SOURCE LINES 38-41 Find or create a "GeomAI" Project --------------------------------- List all the projects available in the client instance: .. GENERATED FROM PYTHON SOURCE LINES 41-45 .. code-block:: Python print(client.projects.list()) .. GENERATED FROM PYTHON SOURCE LINES 46-47 Retrieve your project by its name or create it if it does not exist: .. GENERATED FROM PYTHON SOURCE LINES 47-57 .. code-block:: Python my_dataset_path = "path/to/your/data/folder" my_project_name = "new-bracket-project" try: project = client.projects.get(name=my_project_name) except NotFoundError: project = client.projects.create(my_project_name) .. GENERATED FROM PYTHON SOURCE LINES 58-59 Set the retrieved project as the current project: .. GENERATED FROM PYTHON SOURCE LINES 59-64 .. code-block:: Python client.set_current_project(my_project_name) print(client.current_project) .. GENERATED FROM PYTHON SOURCE LINES 65-68 Add the training data to the current project -------------------------------------------- Display the number of data in the current project and list them all: .. GENERATED FROM PYTHON SOURCE LINES 68-73 .. code-block:: Python print(len(project.data())) print(project.data()) .. GENERATED FROM PYTHON SOURCE LINES 74-78 To add the training data to the current project: - | If the training data has never been uploaded to the server, | use the following script: .. GENERATED FROM PYTHON SOURCE LINES 78-91 .. code-block:: Python for geometry_data_name in os.listdir(my_dataset_path): geometry_data_file = os.path.join(my_dataset_path, geometry_data_name) try: td = client.training_data.create_from_file(file=geometry_data_file, project=project) print(f"Uploaded {geometry_data_name} -> ID: {td.id}") except Exception as e: print(f"Failed to upload {geometry_data_name}: {e}") for data in project.data(): print(data.name) .. GENERATED FROM PYTHON SOURCE LINES 92-95 - If the training data already exists on the server, do as follows: Step 1. Get the project by name: .. GENERATED FROM PYTHON SOURCE LINES 95-98 .. code-block:: Python project_with_TD = client.projects.get(name="bracket-project") .. GENERATED FROM PYTHON SOURCE LINES 99-100 Step 2. Get all training data in that project: .. GENERATED FROM PYTHON SOURCE LINES 100-103 .. code-block:: Python data_items = project_with_TD.data() .. GENERATED FROM PYTHON SOURCE LINES 104-106 Step 3. Print the desired number of training data to add: (5 in this example) .. GENERATED FROM PYTHON SOURCE LINES 106-112 .. code-block:: Python for td in data_items[:5]: print(f"{td.id}: {td.name}") training_data_list = data_items[:5] .. GENERATED FROM PYTHON SOURCE LINES 113-114 Step 4. Add each data item to the current project: .. GENERATED FROM PYTHON SOURCE LINES 114-123 .. code-block:: Python for td in training_data_list: try: td.add_to_project(project) print(f"✅ Added {f'{td.id}: {td.name}'} to current project.") except Exception as e: print(f"❌ Failed to add {f'{td.id}: {td.name}'}: {e}") .. GENERATED FROM PYTHON SOURCE LINES 124-127 Remove data from the project ---------------------------- Use the script below to remove data from the project: .. GENERATED FROM PYTHON SOURCE LINES 127-136 .. code-block:: Python for data in project.data(): try: data.remove_from_project(project) print(f"Removed: {data.name}") except Exception as e: print(f"Could not remove {data.name}: {e}") .. GENERATED FROM PYTHON SOURCE LINES 137-139 Check the result of the removal by displaying the number of data in the current project and listing them all: .. GENERATED FROM PYTHON SOURCE LINES 139-144 .. code-block:: Python print(len(project.data())) print(project.data()) .. GENERATED FROM PYTHON SOURCE LINES 145-147 Set a model configuration for the newly created project and build the model --------------------------------------------------------------------------- .. GENERATED FROM PYTHON SOURCE LINES 150-151 Create a model configuration: .. GENERATED FROM PYTHON SOURCE LINES 151-158 .. code-block:: Python configuration = GeomAIModelConfiguration( nb_epochs=2, # or build_preset: 'debug', 'short', 'default' or 'long' nb_latent_param=2, # Required: Must be between 2 and 256 ) .. GENERATED FROM PYTHON SOURCE LINES 159-160 Build the model: .. GENERATED FROM PYTHON SOURCE LINES 160-163 .. code-block:: Python model = simai.geomai.models.build(project, configuration) .. GENERATED FROM PYTHON SOURCE LINES 164-165 Print the result: .. GENERATED FROM PYTHON SOURCE LINES 165-167 .. code-block:: Python print(f"Model started: {model.id} in project {project.name}") .. _sphx_glr_download__examples_generative_design_ex_00-generative_design_model_build.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: 00-generative_design_model_build.ipynb <00-generative_design_model_build.ipynb>` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: 00-generative_design_model_build.py <00-generative_design_model_build.py>` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: 00-generative_design_model_build.zip <00-generative_design_model_build.zip>` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_