subsurface-terra 2025.1.0rc10__tar.gz → 2025.1.0rc12__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. subsurface_terra-2025.1.0rc12/.teamcity/Subsurface/buildTypes/Subsurface_ReleaseSubsurface.xml +60 -0
  2. subsurface_terra-2025.1.0rc12/.teamcity/Subsurface/buildTypes/Subsurface_ReleaseSubsurface_2.xml +37 -0
  3. subsurface_terra-2025.1.0rc12/.teamcity/Subsurface/buildTypes/Subsurface_Testing.xml +133 -0
  4. subsurface_terra-2025.1.0rc12/.teamcity/Subsurface/project-config.xml +19 -0
  5. subsurface_terra-2025.1.0rc12/.teamcity/Subsurface/vcsRoots/Subsurface_HttpsGithubComTerranigmaSolutionsSubsurfaceRefsHeadsMain.xml +17 -0
  6. subsurface_terra-2025.1.0rc12/.teamcity/Subsurface/vcsRoots/Subsurface_HttpsGithubComTerranigmaSolutionsSubsurfaceRefsHeadsMain1.xml +16 -0
  7. subsurface_terra-2025.1.0rc12/.teamcity/Subsurface/vcsRoots/Subsurface_HttpsGithubComTerranigmaSolutionsSubsurfaceRefsHeadsMain2.xml +16 -0
  8. {subsurface_terra-2025.1.0rc10/subsurface_terra.egg-info → subsurface_terra-2025.1.0rc12}/PKG-INFO +1 -1
  9. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/requirements/requirements_wells.txt +1 -0
  10. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/_version.py +2 -2
  11. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/api/__init__.py +2 -1
  12. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/api/interfaces/stream.py +7 -1
  13. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/geological_formats/boreholes/survey.py +4 -2
  14. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/structs/structured_elements/structured_grid.py +4 -0
  15. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/__init__.py +2 -0
  16. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/mesh/_trimesh_reader.py +26 -16
  17. subsurface_terra-2025.1.0rc12/subsurface/modules/reader/volume/read_grav3d.py +428 -0
  18. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/volume/read_volume.py +66 -6
  19. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/wells/read_borehole_interface.py +10 -0
  20. subsurface_terra-2025.1.0rc12/subsurface/modules/tools/mocking_aux.py +104 -0
  21. subsurface_terra-2025.1.0rc12/subsurface/modules/writer/to_rex/__init__.py +0 -0
  22. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12/subsurface_terra.egg-info}/PKG-INFO +1 -1
  23. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface_terra.egg-info/SOURCES.txt +10 -0
  24. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/.env.example +0 -0
  25. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/LICENSE +0 -0
  26. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/README.rst +0 -0
  27. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/requirements/requirements.txt +0 -0
  28. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/requirements/requirements_all.txt +0 -0
  29. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/requirements/requirements_dev.txt +0 -0
  30. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/requirements/requirements_geospatial.txt +0 -0
  31. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/requirements/requirements_mesh.txt +0 -0
  32. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/requirements/requirements_opt.txt +0 -0
  33. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/requirements/requirements_plot.txt +0 -0
  34. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/requirements/requirements_traces.txt +0 -0
  35. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/requirements/requirements_volume.txt +0 -0
  36. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/setup.cfg +0 -0
  37. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/setup.py +0 -0
  38. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/__init__.py +0 -0
  39. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/api/interfaces/README.rst +0 -0
  40. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/api/interfaces/__init__.py +0 -0
  41. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/api/reader/__init__.py +0 -0
  42. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/api/reader/read_wells.py +0 -0
  43. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/__init__.py +0 -0
  44. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/geological_formats/__init__.py +0 -0
  45. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/geological_formats/boreholes/__init__.py +0 -0
  46. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/geological_formats/boreholes/_combine_trajectories.py +0 -0
  47. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/geological_formats/boreholes/boreholes.py +0 -0
  48. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/geological_formats/boreholes/collars.py +0 -0
  49. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/geological_formats/fault.py +0 -0
  50. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/reader_helpers/__init__.py +0 -0
  51. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/reader_helpers/reader_unstruct.py +0 -0
  52. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/reader_helpers/readers_data.py +0 -0
  53. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/reader_helpers/readers_wells.py +0 -0
  54. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/structs/README.rst +0 -0
  55. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/structs/__init__.py +0 -0
  56. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/structs/base_structures/__init__.py +0 -0
  57. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/structs/base_structures/_liquid_earth_mesh.py +0 -0
  58. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/structs/base_structures/_unstructured_data_constructor.py +0 -0
  59. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/structs/base_structures/base_structures_enum.py +0 -0
  60. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/structs/base_structures/structured_data.py +0 -0
  61. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/structs/base_structures/unstructured_data.py +0 -0
  62. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/structs/structured_elements/__init__.py +0 -0
  63. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/structs/structured_elements/octree_mesh.py +0 -0
  64. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/structs/structured_elements/structured_mesh.py +0 -0
  65. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/structs/unstructured_elements/__init__.py +0 -0
  66. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/structs/unstructured_elements/line_set.py +0 -0
  67. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/structs/unstructured_elements/point_set.py +0 -0
  68. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/structs/unstructured_elements/tetrahedron_mesh.py +0 -0
  69. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/structs/unstructured_elements/triangular_surface.py +0 -0
  70. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/utils/__init__.py +0 -0
  71. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/core/utils/utils_core.py +0 -0
  72. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/__init__.py +0 -0
  73. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/README.rst +0 -0
  74. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/faults/__init__.py +0 -0
  75. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/faults/faults.py +0 -0
  76. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/from_binary.py +0 -0
  77. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/geo_object/__init__.py +0 -0
  78. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/mesh/NOTES.md +0 -0
  79. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/mesh/_GOCAD_mesh.py +0 -0
  80. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/mesh/__init__.py +0 -0
  81. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/mesh/csv_mesh_reader.py +0 -0
  82. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/mesh/dxf_reader.py +0 -0
  83. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/mesh/glb_reader.py +0 -0
  84. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/mesh/mx_reader.py +0 -0
  85. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/mesh/obj_reader.py +0 -0
  86. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/mesh/omf_mesh_reader.py +0 -0
  87. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/mesh/surface_reader.py +0 -0
  88. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/mesh/surfaces_api.py +0 -0
  89. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/petrel/__init__.py +0 -0
  90. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/profiles/__init__.py +0 -0
  91. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/profiles/profiles_core.py +0 -0
  92. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/read_netcdf.py +0 -0
  93. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/topography/__init__.py +0 -0
  94. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/topography/topo_core.py +0 -0
  95. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/volume/__init__.py +0 -0
  96. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/volume/segy_reader.py +0 -0
  97. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/volume/seismic.py +0 -0
  98. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/volume/volume_utils.py +0 -0
  99. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/wells/DEP/__init__.py +0 -0
  100. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/wells/DEP/_well_files_reader.py +0 -0
  101. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/wells/DEP/_wells_api.py +0 -0
  102. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/wells/DEP/_welly_reader.py +0 -0
  103. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/wells/DEP/pandas_to_welly.py +0 -0
  104. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/wells/README.rst +0 -0
  105. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/wells/__init__.py +0 -0
  106. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/wells/_read_to_df.py +0 -0
  107. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/reader/wells/wells_utils.py +0 -0
  108. {subsurface_terra-2025.1.0rc10/subsurface/modules/writer/to_liquid_earth → subsurface_terra-2025.1.0rc12/subsurface/modules/tools}/__init__.py +0 -0
  109. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/visualization/__init__.py +0 -0
  110. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/visualization/to_pyvista.py +0 -0
  111. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/writer/__init__.py +0 -0
  112. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/writer/to_binary.py +0 -0
  113. {subsurface_terra-2025.1.0rc10/subsurface/modules/writer/to_rex → subsurface_terra-2025.1.0rc12/subsurface/modules/writer/to_liquid_earth}/__init__.py +0 -0
  114. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/writer/to_rex/common.py +0 -0
  115. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/writer/to_rex/data_struct.py +0 -0
  116. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/writer/to_rex/doc/rex-spec-v1.md +0 -0
  117. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/writer/to_rex/doc/right-handed.png +0 -0
  118. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/writer/to_rex/doc/sketchup_example.jpg +0 -0
  119. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/writer/to_rex/gempy_to_rexfile.py +0 -0
  120. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/writer/to_rex/material_encoder.py +0 -0
  121. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/writer/to_rex/mesh_encoder.py +0 -0
  122. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/writer/to_rex/to_rex.py +0 -0
  123. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/modules/writer/to_rex/utils.py +0 -0
  124. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface/optional_requirements.py +0 -0
  125. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface_terra.egg-info/dependency_links.txt +0 -0
  126. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface_terra.egg-info/not-zip-safe +0 -0
  127. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface_terra.egg-info/requires.txt +0 -0
  128. {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc12}/subsurface_terra.egg-info/top_level.txt +0 -0
@@ -0,0 +1,60 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <template xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="671f325d-03f3-4855-994a-eb6080da9084" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2021.1/project-config.xsd">
3
+ <name>Release Subsurface</name>
4
+ <settings>
5
+ <parameters>
6
+ <param name="env.PACKAGE_VERSION" value="" spec="text description='The version that I want to release' label='Package version' validationMode='any' display='prompt'" />
7
+ <param name="env.TWINE_PASSWORD" value="credentialsJSON:e9a0b402-f8b3-4f86-978c-9c88c456dc9c" spec="password display='normal'" />
8
+ </parameters>
9
+ <build-runners>
10
+ <runner id="Git_Tagging" name="Git Tagging" type="simpleRunner">
11
+ <parameters>
12
+ <param name="script.content"><![CDATA[git tag v%env.PACKAGE_VERSION%
13
+ git push origin v%env.PACKAGE_VERSION%]]></param>
14
+ <param name="teamcity.step.mode" value="default" />
15
+ <param name="use.custom.script" value="true" />
16
+ </parameters>
17
+ </runner>
18
+ <runner id="Build" name="Build" type="simpleRunner">
19
+ <parameters>
20
+ <param name="script.content"><![CDATA[python -m pip install --upgrade build
21
+ python -m build]]></param>
22
+ <param name="teamcity.kubernetes.executor.pull.policy" value="IfNotPresent" />
23
+ <param name="teamcity.step.mode" value="default" />
24
+ <param name="use.custom.script" value="true" />
25
+ </parameters>
26
+ </runner>
27
+ <runner id="Push_to_PyPi" name="Push to PyPi" type="simpleRunner">
28
+ <parameters>
29
+ <param name="script.content"><![CDATA[python -m pip install --upgrade twine
30
+ python -m twine upload dist/* -u __token__ -p %env.TWINE_PASSWORD%]]></param>
31
+ <param name="teamcity.kubernetes.executor.pull.policy" value="IfNotPresent" />
32
+ <param name="teamcity.step.mode" value="default" />
33
+ <param name="use.custom.script" value="true" />
34
+ </parameters>
35
+ </runner>
36
+ <runner id="Push_To_GitHub" name="Push To GitHub" type="simpleRunner">
37
+ <parameters>
38
+ <param name="script.content" value="gh release create %env.PACKAGE_VERSION% dist/* --title &quot;%env.PACKAGE_VERSION%&quot; --notes &quot;Release notes here&quot;" />
39
+ <param name="teamcity.kubernetes.executor.pull.policy" value="IfNotPresent" />
40
+ <param name="teamcity.step.mode" value="default" />
41
+ <param name="use.custom.script" value="true" />
42
+ </parameters>
43
+ </runner>
44
+ </build-runners>
45
+ <vcs-settings>
46
+ <vcs-entry-ref root-id="Subsurface_HttpsGithubComTerranigmaSolutionsSubsurfaceRefsHeadsMain" />
47
+ </vcs-settings>
48
+ <requirements />
49
+ <build-triggers />
50
+ <build-extensions>
51
+ <extension id="BUILD_EXT_1" type="perfmon">
52
+ <parameters>
53
+ <param name="teamcity.perfmon.feature.enabled" value="true" />
54
+ </parameters>
55
+ </extension>
56
+ </build-extensions>
57
+ <cleanup />
58
+ </settings>
59
+ </template>
60
+
@@ -0,0 +1,37 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <build-type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="c15fb876-7044-47cd-a3b0-676767e4ca63" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2021.1/project-config.xsd">
3
+ <name>Release Subsurface</name>
4
+ <description />
5
+ <settings ref="ReleasePythonPackage">
6
+ <parameters />
7
+ <build-runners order="Git_Tagging, Build, Push_to_PyPi, Push_To_GitHub">
8
+ <runner id="Build" name="Build" type="simpleRunner">
9
+ <parameters>
10
+ <param name="script.content"><![CDATA[echo Cleaning build artifacts...
11
+ rmdir /s /q dist
12
+ rmdir /s /q build
13
+ echo Clean complete.
14
+
15
+ python -m pip install --upgrade build
16
+ python -m build]]></param>
17
+ <param name="teamcity.step.mode" value="default" />
18
+ <param name="use.custom.script" value="true" />
19
+ </parameters>
20
+ </runner>
21
+ <runner id="Push_To_GitHub" name="Push To GitHub" type="simpleRunner">
22
+ <parameters>
23
+ <param name="script.content" value="gh release create %env.PACKAGE_VERSION% dist/* --notes &quot;Release notes here&quot; --repo terranigma-solutions/subsurface" />
24
+ <param name="teamcity.step.mode" value="default" />
25
+ <param name="use.custom.script" value="true" />
26
+ </parameters>
27
+ </runner>
28
+ </build-runners>
29
+ <vcs-settings>
30
+ <vcs-entry-ref root-id="Subsurface_HttpsGithubComTerranigmaSolutionsSubsurfaceRefsHeadsMain1" />
31
+ </vcs-settings>
32
+ <requirements />
33
+ <build-triggers />
34
+ <cleanup />
35
+ </settings>
36
+ </build-type>
37
+
@@ -0,0 +1,133 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <build-type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="ed495f4f-4df2-4a37-bbfe-2489430a46e8" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2025.3/project-config.xsd">
3
+ <name>Testing</name>
4
+ <description />
5
+ <settings>
6
+ <options>
7
+ <option name="shouldFailBuildOnBadExitCode" value="false" />
8
+ </options>
9
+ <parameters>
10
+ <param name="REQUIREMENT_LEVEL" value="READ_MESH" />
11
+ <param name="env.MPLBACKEND" value="Agg" />
12
+ <param name="env.PATH_TO_ASCII_DRILLHOLES" value="%env.TERRA_PATH_DEVOPS%/boreholes/ASCII_drillholes/" />
13
+ <param name="env.PATH_TO_BGR" value="%env.TERRA_PATH_DEVOPS%/boreholes/" />
14
+ <param name="env.PATH_TO_BOLIDEN" value="%env.TERRA_PATH_DEVOPS%/combined/Leapfrog_OMF/Garpenberg_global_20220715.omf" />
15
+ <param name="env.PATH_TO_GLB" value="%env.TERRA_PATH_DEVOPS%/meshes/GLB - GLTF/Duck.glb" />
16
+ <param name="env.PATH_TO_GLB_COMPLEX" value="%env.TERRA_PATH_DEVOPS%/meshes/GLB - GLTF/GlbFile.glb" />
17
+ <param name="env.PATH_TO_GRAV3D_MOD" value="%env.TERRA_PATH_DEVOPS%/volume/MSH/19_simpeg_inv_result_25ft_7.62m_psi2_Sep.mod" />
18
+ <param name="env.PATH_TO_GRAV3D_MSH" value="%env.TERRA_PATH_DEVOPS%/volume/MSH/client_voxel.msh" />
19
+ <param name="env.PATH_TO_GRAV3D_MSH_II" value="%env.TERRA_PATH_DEVOPS%/volume/MSH/IDN-65/ubc_mesh_mod" />
20
+ <param name="env.PATH_TO_INTERPRETATION" value="%env.TERRA_PATH_DEVOPS%/meshes/Seismic/Anl2-1.tif" />
21
+ <param name="env.PATH_TO_MAGNETIC_INTERPRETATION" value="%env.TERRA_PATH_DEVOPS%/meshes/Magnetic/Plate 2a - Profile 1 2D inversion.pdf" />
22
+ <param name="env.PATH_TO_MTL" value="%env.TERRA_PATH_DEVOPS%/meshes/OBJ/Broadhaven_Obj/model/model.mtl" />
23
+ <param name="env.PATH_TO_OBJ" value="%env.TERRA_PATH_DEVOPS%/meshes/OBJ/Broadhaven_Obj/model/model.obj" />
24
+ <param name="env.PATH_TO_OBJ_FACE_I" value="%env.TERRA_PATH_DEVOPS%/meshes/OBJ/Faces/face1.obj" />
25
+ <param name="env.PATH_TO_OBJ_FACE_II" value="%env.TERRA_PATH_DEVOPS%/meshes/OBJ/Faces/Lapp_458_Rum_19_2_2024-02-21_0820_scan5_geoim4.obj" />
26
+ <param name="env.PATH_TO_OBJ_GALLERIES_I" value="%env.TERRA_PATH_DEVOPS%/meshes/OBJ/Galleries/Solid1.obj" />
27
+ <param name="env.PATH_TO_OBJ_MULTIMATERIAL_II" value="%env.TERRA_PATH_DEVOPS%/meshes/OBJ/MultiMaterialObj/MultiMaterialObj.obj" />
28
+ <param name="env.PATH_TO_OBJ_SCANS" value="%env.TERRA_PATH_DEVOPS%/meshes/OBJ/Core scans Boliden/rsrbF9l2zc/model.obj" />
29
+ <param name="env.PATH_TO_OMF" value="%env.TERRA_PATH_DEVOPS%/combined/Leapfrog_OMF/Collinstown.omf" />
30
+ <param name="env.PATH_TO_SECTION" value="%env.TERRA_PATH_DEVOPS%/meshes/Seismic/L1_CDP-Coords.txt" />
31
+ <param name="env.PATH_TO_SEISMIC" value="%env.TERRA_PATH_DEVOPS%/meshes/Seismic/Linie01.segy" />
32
+ <param name="env.PATH_TO_SEISMIC_FINAL" value="%env.TERRA_PATH_DEVOPS%/meshes/Seismic/L1_final-mig.sgy" />
33
+ <param name="env.PATH_TO_SPREMBERG_ASSAY" value="%env.TERRA_PATH_DEVOPS%/boreholes/Spremberg/Spremberg_assay.csv" />
34
+ <param name="env.PATH_TO_SPREMBERG_COLLAR" value="%env.TERRA_PATH_DEVOPS%/boreholes/Spremberg/Spremberg_collar_updated.csv" />
35
+ <param name="env.PATH_TO_SPREMBERG_STRATIGRAPHY" value="%env.TERRA_PATH_DEVOPS%/boreholes/Spremberg/Spremberg_stratigraphy.csv" />
36
+ <param name="env.PATH_TO_SPREMBERG_SURVEY" value="%env.TERRA_PATH_DEVOPS%/boreholes/Spremberg/Spremberg_survey.csv" />
37
+ <param name="env.PATH_TO_WEISWEILER" value="%env.TERRA_PATH_DEVOPS%/meshes/Weisweiler/" />
38
+ <param name="env.TERRA_PATH_DEVOPS" value="D:\OneDrive - Terranigma Solutions GmbH/Documents - Terranigma Base/DevOps/SubsurfaceTestData/" />
39
+ </parameters>
40
+ <build-runners>
41
+ <runner id="Setup" name="Setup" type="simpleRunner">
42
+ <parameters>
43
+ <param name="script.content"><![CDATA[@echo on
44
+ python -m venv venv
45
+ call venv\Scripts\activate
46
+ venv\Scripts\python -m pip install --upgrade pip
47
+
48
+ echo Checking directory...
49
+ dir
50
+ dir .requirements
51
+
52
+ venv\Scripts\pip install --verbose -r requirements/requirements_dev.txt
53
+ venv\Scripts\pip install --verbose teamcity-messages]]></param>
54
+ <param name="teamcity.step.mode" value="default" />
55
+ <param name="use.custom.script" value="true" />
56
+ </parameters>
57
+ </runner>
58
+ <runner id="Run_Test" name="Run Test: Core" type="simpleRunner">
59
+ <parameters>
60
+ <param name="script.content"><![CDATA[venv\Scripts\pip install --verbose -r requirements/requirements_plot.txt
61
+
62
+ @echo on
63
+ set REQUIREMENT_LEVEL=READ_MESH
64
+ echo REQUIREMENT_LEVEL is %REQUIREMENT_LEVEL%
65
+ venv\Scripts\python -m pytest --teamcity -v -m core]]></param>
66
+ <param name="teamcity.step.mode" value="default" />
67
+ <param name="use.custom.script" value="true" />
68
+ </parameters>
69
+ </runner>
70
+ <runner id="Run_Test_2" name="Run Test: Mesh" type="simpleRunner">
71
+ <parameters>
72
+ <param name="script.content"><![CDATA[venv\Scripts\pip install --verbose -r requirements/requirements_mesh.txt
73
+
74
+ @echo on
75
+ set REQUIREMENT_LEVEL=READ_MESH
76
+ echo REQUIREMENT_LEVEL is %REQUIREMENT_LEVEL%
77
+ venv\Scripts\python -m pytest --teamcity -v]]></param>
78
+ <param name="teamcity.step.mode" value="execute_if_failed" />
79
+ <param name="use.custom.script" value="true" />
80
+ </parameters>
81
+ </runner>
82
+ <runner id="Run_Test_wells" name="Run Test: Wells" type="simpleRunner">
83
+ <parameters>
84
+ <param name="script.content"><![CDATA[venv\Scripts\pip install --verbose -r requirements/requirements_wells.txt
85
+
86
+ @echo on
87
+ set REQUIREMENT_LEVEL=READ_WELL
88
+ echo REQUIREMENT_LEVEL is %REQUIREMENT_LEVEL%
89
+ venv\Scripts\python -m pytest --teamcity -v]]></param>
90
+ <param name="teamcity.step.mode" value="execute_if_failed" />
91
+ <param name="use.custom.script" value="true" />
92
+ </parameters>
93
+ </runner>
94
+ </build-runners>
95
+ <vcs-settings>
96
+ <vcs-entry-ref root-id="Subsurface_HttpsGithubComTerranigmaSolutionsSubsurfaceRefsHeadsMain2" />
97
+ </vcs-settings>
98
+ <build-triggers>
99
+ <build-trigger id="TRIGGER_4" type="vcsTrigger">
100
+ <parameters>
101
+ <param name="branchFilter"><![CDATA[+pr:draft=false
102
+ +:refs/heads/main]]></param>
103
+ <param name="enableQueueOptimization" value="true" />
104
+ <param name="quietPeriodMode" value="DO_NOT_USE" />
105
+ </parameters>
106
+ </build-trigger>
107
+ </build-triggers>
108
+ <build-extensions>
109
+ <extension id="perfmon" type="perfmon">
110
+ <parameters>
111
+ <param name="teamcity.perfmon.feature.enabled" value="true" />
112
+ </parameters>
113
+ </extension>
114
+ <extension id="BUILD_EXT_5" type="commit-status-publisher">
115
+ <parameters>
116
+ <param name="github_authentication_type" value="token" />
117
+ <param name="github_host" value="https://api.github.com" />
118
+ <param name="publisherId" value="githubStatusPublisher" />
119
+ <param name="secure:github_access_token" value="credentialsJSON:4df4bdb0-1278-4834-a702-18ae3a286003" />
120
+ </parameters>
121
+ </extension>
122
+ <extension id="BUILD_EXT_6" type="pullRequests">
123
+ <parameters>
124
+ <param name="authenticationType" value="token" />
125
+ <param name="filterAuthorRole" value="MEMBER" />
126
+ <param name="providerType" value="github" />
127
+ <param name="secure:accessToken" value="credentialsJSON:4df4bdb0-1278-4834-a702-18ae3a286003" />
128
+ </parameters>
129
+ </extension>
130
+ </build-extensions>
131
+ </settings>
132
+ </build-type>
133
+
@@ -0,0 +1,19 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="02a92682-f6c2-4edf-af46-08d095b0ce77" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2021.1/project-config.xsd">
3
+ <name>Subsurface</name>
4
+ <parameters />
5
+ <project-extensions>
6
+ <extension id="PROJECT_EXT_15" type="versionedSettings">
7
+ <parameters>
8
+ <param name="buildSettings" value="ALWAYS_USE_CURRENT" />
9
+ <param name="credentialsStorageType" value="credentialsJSON" />
10
+ <param name="enabled" value="true" />
11
+ <param name="ignoreChangesInDependenciesAndVcsSettings" value="false" />
12
+ <param name="rootId" value="Subsurface_HttpsGithubComTerranigmaSolutionsSubsurfaceRefsHeadsMain" />
13
+ <param name="showChanges" value="false" />
14
+ </parameters>
15
+ </extension>
16
+ </project-extensions>
17
+ <cleanup />
18
+ </project>
19
+
@@ -0,0 +1,17 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <vcs-root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="b5c00aa4-356b-4c94-8113-009cde53f17b" type="jetbrains.git" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2021.1/project-config.xsd">
3
+ <name>https://github.com/terranigma-solutions/subsurface#refs/heads/main</name>
4
+ <param name="agentCleanFilesPolicy" value="ALL_UNTRACKED" />
5
+ <param name="agentCleanPolicy" value="ON_BRANCH_CHANGE" />
6
+ <param name="authMethod" value="PASSWORD" />
7
+ <param name="branch" value="refs/heads/main" />
8
+ <param name="ignoreKnownHosts" value="true" />
9
+ <param name="secure:password" value="credentialsJSON:4df4bdb0-1278-4834-a702-18ae3a286003" />
10
+ <param name="submoduleCheckout" value="CHECKOUT" />
11
+ <param name="teamcity:branchSpec" value="refs/heads/*" />
12
+ <param name="url" value="https://github.com/terranigma-solutions/subsurface" />
13
+ <param name="useAlternates" value="AUTO" />
14
+ <param name="username" value="Leguark" />
15
+ <param name="usernameStyle" value="USERID" />
16
+ </vcs-root>
17
+
@@ -0,0 +1,16 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <vcs-root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="e9cb014a-3f5f-4e33-8d40-9c5cb180a9d6" type="jetbrains.git" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2021.1/project-config.xsd">
3
+ <name>https://github.com/terranigma-solutions/subsurface#refs/heads/main (1)</name>
4
+ <param name="agentCleanFilesPolicy" value="ALL_UNTRACKED" />
5
+ <param name="agentCleanPolicy" value="ON_BRANCH_CHANGE" />
6
+ <param name="authMethod" value="PASSWORD" />
7
+ <param name="branch" value="refs/heads/main" />
8
+ <param name="ignoreKnownHosts" value="true" />
9
+ <param name="secure:password" value="credentialsJSON:4df4bdb0-1278-4834-a702-18ae3a286003" />
10
+ <param name="submoduleCheckout" value="CHECKOUT" />
11
+ <param name="url" value="https://github.com/terranigma-solutions/subsurface" />
12
+ <param name="useAlternates" value="AUTO" />
13
+ <param name="username" value="Leguark" />
14
+ <param name="usernameStyle" value="USERID" />
15
+ </vcs-root>
16
+
@@ -0,0 +1,16 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <vcs-root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="a5d752d7-0d2a-4197-b779-2049040d97ba" type="jetbrains.git" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2021.1/project-config.xsd">
3
+ <name>https://github.com/terranigma-solutions/subsurface#refs/heads/main (2)</name>
4
+ <param name="agentCleanFilesPolicy" value="ALL_UNTRACKED" />
5
+ <param name="agentCleanPolicy" value="ON_BRANCH_CHANGE" />
6
+ <param name="authMethod" value="PASSWORD" />
7
+ <param name="branch" value="refs/heads/main" />
8
+ <param name="ignoreKnownHosts" value="true" />
9
+ <param name="secure:password" value="credentialsJSON:4df4bdb0-1278-4834-a702-18ae3a286003" />
10
+ <param name="submoduleCheckout" value="CHECKOUT" />
11
+ <param name="url" value="https://github.com/terranigma-solutions/subsurface" />
12
+ <param name="useAlternates" value="AUTO" />
13
+ <param name="username" value="Leguark" />
14
+ <param name="usernameStyle" value="USERID" />
15
+ </vcs-root>
16
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: subsurface_terra
3
- Version: 2025.1.0rc10
3
+ Version: 2025.1.0rc12
4
4
  Summary: Subsurface data types and utilities. This version is the one used by Terranigma Solutions. Please feel free to take anything in this repository for the original one.
5
5
  Home-page: https://softwareunderground.github.io/subsurface
6
6
  Author: Software Underground
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '2025.1.0rc10'
21
- __version_tuple__ = version_tuple = (2025, 1, 0)
20
+ __version__ = version = '2025.1.0rc12'
21
+ __version_tuple__ = version_tuple = (2025, 1, 0, 'rc12')
@@ -8,5 +8,6 @@ from .interfaces.stream import (
8
8
  VTK_stream_to_struct,
9
9
  MX_stream_to_unstruc,
10
10
  OBJ_stream_to_trisurf,
11
- GLTF_stream_to_trisurf
11
+ GLTF_stream_to_trisurf,
12
+ MSH_stream_to_struct,
12
13
  )
@@ -1,6 +1,6 @@
1
1
  import io
2
2
  from io import BytesIO
3
- from typing import TextIO
3
+ from typing import TextIO, Optional
4
4
 
5
5
  import pandas
6
6
 
@@ -57,11 +57,17 @@ def GLTF_stream_to_trisurf(gltf_stream: io.BytesIO, coordinate_system: TriMeshTr
57
57
  tri_mesh: TriSurf = reader.load_gltf_with_trimesh(gltf_stream, coordinate_system)
58
58
  return tri_mesh
59
59
 
60
+
60
61
  def VTK_stream_to_struct(stream: BytesIO, attribute_name: str) -> list[StructuredData]:
61
62
  struct = read_VTK_structured_grid(stream, attribute_name)
62
63
  return [struct]
63
64
 
64
65
 
66
+ def MSH_stream_to_struct(grid_stream: TextIO, values_stream: TextIO, missing_value: Optional[float], attr_name: Optional[str]) -> list[StructuredData]:
67
+ struct = reader.read_msh_structured_grid(grid_stream, values_stream, missing_value, attr_name)
68
+ return [struct]
69
+
70
+
65
71
  def CSV_wells_stream_to_unstruc(
66
72
  collars_reader: GenericReaderFilesHelper,
67
73
  surveys_reader: GenericReaderFilesHelper,
@@ -111,9 +111,11 @@ def _map_attrs_to_measured_depths(attrs: pd.DataFrame, survey: Survey) -> pd.Dat
111
111
 
112
112
  # Start with a copy of the existing attributes DataFrame
113
113
  new_attrs = survey.survey_trajectory.data.points_attributes.copy()
114
- if 'component lith' in attrs.columns:
114
+ if 'component lith' in attrs.columns and 'lith_ids' not in attrs.columns:
115
115
  # Factorize lith components directly in-place
116
116
  attrs['lith_ids'], _ = pd.factorize(attrs['component lith'], use_na_sentinel=True)
117
+ else:
118
+ pass
117
119
 
118
120
  # Add missing columns from attrs, preserving their dtypes
119
121
  for col in attrs.columns.difference(new_attrs.columns):
@@ -152,7 +154,7 @@ def _map_attrs_to_measured_depths(attrs: pd.DataFrame, survey: Survey) -> pd.Dat
152
154
  continue
153
155
  attr_to_interpolate = attrs_well[col]
154
156
  # make sure the attr_to_interpolate is not a string
155
- if attr_to_interpolate.dtype == 'O':
157
+ if attr_to_interpolate.dtype == 'O' or isinstance(attr_to_interpolate.dtype, pd.CategoricalDtype):
156
158
  continue
157
159
  if col in ['lith_ids', 'component lith']:
158
160
  interp_kind = 'nearest'
@@ -33,6 +33,10 @@ class StructuredGrid:
33
33
  grid_3d = np.meshgrid(*cart_coord, indexing='ij')
34
34
  return grid_3d
35
35
 
36
+ @property
37
+ def active_attributes(self) -> np.ndarray:
38
+ return self.ds.data[self.ds.active_data_array_name].values
39
+
36
40
  def meshgrid_2d(self, attribute_name_coord_name: str = None) -> list:
37
41
  """
38
42
 
@@ -9,3 +9,5 @@ from .mesh.dxf_reader import dxf_stream_to_unstruct_input, dxf_file_to_unstruct_
9
9
  from .mesh.mx_reader import mx_to_unstruc_from_binary
10
10
  from .mesh.obj_reader import load_obj_with_trimesh, load_obj_with_trimesh_from_binary
11
11
  from .mesh.glb_reader import load_gltf_with_trimesh
12
+
13
+ from .volume.read_grav3d import read_msh_structured_grid
@@ -9,9 +9,14 @@ from .... import optional_requirements
9
9
  from ....core.structs import TriSurf, StructuredData
10
10
 
11
11
 
12
- class TriMeshTransformations(enum.Enum):
13
- RIGHT_HANDED_Z_UP = "right_handed_z_up"
14
- ORIGINAL = "original"
12
+ class TriMeshTransformations(enum.Flag):
13
+ UP_Z = 2**1
14
+ UP_Y = 2**2
15
+ FORWARD_MINUS_Z = 2**3
16
+ FORWARD_PLUS_Z = 2**4
17
+ RIGHT_HANDED_Z_UP_Y_REVERSED = UP_Y | FORWARD_MINUS_Z
18
+ RIGHT_HANDED_Z_UP = UP_Y | FORWARD_PLUS_Z
19
+ ORIGINAL = UP_Z | FORWARD_MINUS_Z
15
20
 
16
21
 
17
22
  def load_with_trimesh(path_to_file_or_buffer, file_type: Optional[str] = None,
@@ -23,13 +28,10 @@ def load_with_trimesh(path_to_file_or_buffer, file_type: Optional[str] = None,
23
28
  trimesh = optional_requirements.require_trimesh()
24
29
  scene_or_mesh = LoadWithTrimesh.load_with_trimesh(path_to_file_or_buffer, file_type, plot)
25
30
 
26
- # Compute a -90° rotation around the X axis
27
- angle_rad = np.deg2rad(-90)
28
- transform = trimesh.transformations.rotation_matrix(angle_rad, [1, 0, 0])
29
-
30
31
  match coordinate_system:
31
32
  case TriMeshTransformations.ORIGINAL:
32
33
  return scene_or_mesh
34
+ # * Forward -Z up Y
33
35
  case TriMeshTransformations.RIGHT_HANDED_Z_UP:
34
36
  # Transform from Y-up (modeling software) to Z-up (scientific)
35
37
  # This rotates the model so that:
@@ -37,21 +39,29 @@ def load_with_trimesh(path_to_file_or_buffer, file_type: Optional[str] = None,
37
39
  # Old Z axis → New -Y axis
38
40
  # Old X axis → Remains as X axis
39
41
  transform = np.array([
40
- [1, 0, 0, 0], # X → X
41
- [0, 0, 1, 0], # Y → Z
42
- [0, 1, 0, 0], # Z → -Y
42
+ [1, 0, 0, 0],
43
+ [0, 0, -1, 0],
44
+ [0, 1, 0, 0],
43
45
  [0, 0, 0, 1]
44
46
  ])
45
-
47
+ case TriMeshTransformations.RIGHT_HANDED_Z_UP_Y_REVERSED:
48
+ # * Forward Z Up Y
49
+ transform=np.array([
50
+ [1, 0, 0, 0],
51
+ [0, 0, 1, 0],
52
+ [0, 1, 0, 0],
53
+ [0, 0, 0, 1],
54
+ ])
46
55
  # Apply the coordinate transformation
47
- if isinstance(scene_or_mesh, trimesh.Scene):
48
- for geometry in scene_or_mesh.geometry.values():
49
- geometry.apply_transform(transform)
50
- else:
51
- scene_or_mesh.apply_transform(transform)
56
+ # TODO: Add all the options of blender
52
57
  case _:
53
58
  raise ValueError(f"Invalid coordinate system: {coordinate_system}")
54
59
 
60
+ if isinstance(scene_or_mesh, trimesh.Scene):
61
+ for geometry in scene_or_mesh.geometry.values():
62
+ geometry.apply_transform(transform)
63
+ else:
64
+ scene_or_mesh.apply_transform(transform)
55
65
  return scene_or_mesh
56
66
 
57
67