subsurface-terra 2025.1.0rc12__tar.gz → 2025.1.0rc14__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/subsurface_terra.egg-info → subsurface_terra-2025.1.0rc14}/PKG-INFO +1 -1
  2. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/_version.py +2 -2
  3. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/geological_formats/boreholes/boreholes.py +4 -1
  4. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/structs/base_structures/structured_data.py +19 -2
  5. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/mesh/_trimesh_reader.py +5 -1
  6. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14/subsurface_terra.egg-info}/PKG-INFO +1 -1
  7. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/.env.example +0 -0
  8. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/.teamcity/Subsurface/buildTypes/Subsurface_ReleaseSubsurface.xml +0 -0
  9. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/.teamcity/Subsurface/buildTypes/Subsurface_ReleaseSubsurface_2.xml +0 -0
  10. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/.teamcity/Subsurface/buildTypes/Subsurface_Testing.xml +0 -0
  11. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/.teamcity/Subsurface/project-config.xml +0 -0
  12. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/.teamcity/Subsurface/vcsRoots/Subsurface_HttpsGithubComTerranigmaSolutionsSubsurfaceRefsHeadsMain.xml +0 -0
  13. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/.teamcity/Subsurface/vcsRoots/Subsurface_HttpsGithubComTerranigmaSolutionsSubsurfaceRefsHeadsMain1.xml +0 -0
  14. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/.teamcity/Subsurface/vcsRoots/Subsurface_HttpsGithubComTerranigmaSolutionsSubsurfaceRefsHeadsMain2.xml +0 -0
  15. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/LICENSE +0 -0
  16. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/README.rst +0 -0
  17. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/requirements/requirements.txt +0 -0
  18. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/requirements/requirements_all.txt +0 -0
  19. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/requirements/requirements_dev.txt +0 -0
  20. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/requirements/requirements_geospatial.txt +0 -0
  21. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/requirements/requirements_mesh.txt +0 -0
  22. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/requirements/requirements_opt.txt +0 -0
  23. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/requirements/requirements_plot.txt +0 -0
  24. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/requirements/requirements_traces.txt +0 -0
  25. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/requirements/requirements_volume.txt +0 -0
  26. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/requirements/requirements_wells.txt +0 -0
  27. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/setup.cfg +0 -0
  28. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/setup.py +0 -0
  29. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/__init__.py +0 -0
  30. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/api/__init__.py +0 -0
  31. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/api/interfaces/README.rst +0 -0
  32. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/api/interfaces/__init__.py +0 -0
  33. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/api/interfaces/stream.py +0 -0
  34. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/api/reader/__init__.py +0 -0
  35. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/api/reader/read_wells.py +0 -0
  36. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/__init__.py +0 -0
  37. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/geological_formats/__init__.py +0 -0
  38. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/geological_formats/boreholes/__init__.py +0 -0
  39. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/geological_formats/boreholes/_combine_trajectories.py +0 -0
  40. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/geological_formats/boreholes/collars.py +0 -0
  41. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/geological_formats/boreholes/survey.py +0 -0
  42. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/geological_formats/fault.py +0 -0
  43. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/reader_helpers/__init__.py +0 -0
  44. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/reader_helpers/reader_unstruct.py +0 -0
  45. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/reader_helpers/readers_data.py +0 -0
  46. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/reader_helpers/readers_wells.py +0 -0
  47. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/structs/README.rst +0 -0
  48. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/structs/__init__.py +0 -0
  49. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/structs/base_structures/__init__.py +0 -0
  50. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/structs/base_structures/_liquid_earth_mesh.py +0 -0
  51. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/structs/base_structures/_unstructured_data_constructor.py +0 -0
  52. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/structs/base_structures/base_structures_enum.py +0 -0
  53. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/structs/base_structures/unstructured_data.py +0 -0
  54. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/structs/structured_elements/__init__.py +0 -0
  55. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/structs/structured_elements/octree_mesh.py +0 -0
  56. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/structs/structured_elements/structured_grid.py +0 -0
  57. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/structs/structured_elements/structured_mesh.py +0 -0
  58. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/structs/unstructured_elements/__init__.py +0 -0
  59. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/structs/unstructured_elements/line_set.py +0 -0
  60. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/structs/unstructured_elements/point_set.py +0 -0
  61. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/structs/unstructured_elements/tetrahedron_mesh.py +0 -0
  62. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/structs/unstructured_elements/triangular_surface.py +0 -0
  63. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/utils/__init__.py +0 -0
  64. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/core/utils/utils_core.py +0 -0
  65. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/__init__.py +0 -0
  66. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/README.rst +0 -0
  67. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/__init__.py +0 -0
  68. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/faults/__init__.py +0 -0
  69. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/faults/faults.py +0 -0
  70. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/from_binary.py +0 -0
  71. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/geo_object/__init__.py +0 -0
  72. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/mesh/NOTES.md +0 -0
  73. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/mesh/_GOCAD_mesh.py +0 -0
  74. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/mesh/__init__.py +0 -0
  75. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/mesh/csv_mesh_reader.py +0 -0
  76. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/mesh/dxf_reader.py +0 -0
  77. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/mesh/glb_reader.py +0 -0
  78. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/mesh/mx_reader.py +0 -0
  79. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/mesh/obj_reader.py +0 -0
  80. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/mesh/omf_mesh_reader.py +0 -0
  81. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/mesh/surface_reader.py +0 -0
  82. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/mesh/surfaces_api.py +0 -0
  83. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/petrel/__init__.py +0 -0
  84. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/profiles/__init__.py +0 -0
  85. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/profiles/profiles_core.py +0 -0
  86. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/read_netcdf.py +0 -0
  87. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/topography/__init__.py +0 -0
  88. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/topography/topo_core.py +0 -0
  89. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/volume/__init__.py +0 -0
  90. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/volume/read_grav3d.py +0 -0
  91. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/volume/read_volume.py +0 -0
  92. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/volume/segy_reader.py +0 -0
  93. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/volume/seismic.py +0 -0
  94. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/volume/volume_utils.py +0 -0
  95. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/wells/DEP/__init__.py +0 -0
  96. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/wells/DEP/_well_files_reader.py +0 -0
  97. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/wells/DEP/_wells_api.py +0 -0
  98. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/wells/DEP/_welly_reader.py +0 -0
  99. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/wells/DEP/pandas_to_welly.py +0 -0
  100. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/wells/README.rst +0 -0
  101. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/wells/__init__.py +0 -0
  102. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/wells/_read_to_df.py +0 -0
  103. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/wells/read_borehole_interface.py +0 -0
  104. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/reader/wells/wells_utils.py +0 -0
  105. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/tools/__init__.py +0 -0
  106. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/tools/mocking_aux.py +0 -0
  107. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/visualization/__init__.py +0 -0
  108. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/visualization/to_pyvista.py +0 -0
  109. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/writer/__init__.py +0 -0
  110. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/writer/to_binary.py +0 -0
  111. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/writer/to_liquid_earth/__init__.py +0 -0
  112. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/writer/to_rex/__init__.py +0 -0
  113. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/writer/to_rex/common.py +0 -0
  114. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/writer/to_rex/data_struct.py +0 -0
  115. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/writer/to_rex/doc/rex-spec-v1.md +0 -0
  116. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/writer/to_rex/doc/right-handed.png +0 -0
  117. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/writer/to_rex/doc/sketchup_example.jpg +0 -0
  118. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/writer/to_rex/gempy_to_rexfile.py +0 -0
  119. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/writer/to_rex/material_encoder.py +0 -0
  120. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/writer/to_rex/mesh_encoder.py +0 -0
  121. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/writer/to_rex/to_rex.py +0 -0
  122. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/modules/writer/to_rex/utils.py +0 -0
  123. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface/optional_requirements.py +0 -0
  124. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface_terra.egg-info/SOURCES.txt +0 -0
  125. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface_terra.egg-info/dependency_links.txt +0 -0
  126. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface_terra.egg-info/not-zip-safe +0 -0
  127. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface_terra.egg-info/requires.txt +0 -0
  128. {subsurface_terra-2025.1.0rc12 → subsurface_terra-2025.1.0rc14}/subsurface_terra.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: subsurface_terra
3
- Version: 2025.1.0rc12
3
+ Version: 2025.1.0rc14
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.0rc12'
21
- __version_tuple__ = version_tuple = (2025, 1, 0, 'rc12')
20
+ __version__ = version = '2025.1.0rc14'
21
+ __version_tuple__ = version_tuple = (2025, 1, 0, 'rc14')
@@ -91,7 +91,10 @@ class BoreholeSet:
91
91
  def get_bottom_coords_for_each_lith(self) -> dict[Hashable, np.ndarray]:
92
92
  merged_df = self._merge_vertex_data_arrays_to_dataframe()
93
93
  component_lith_arrays = {}
94
- for lith, group in merged_df.groupby('component lith'):
94
+ groupby = merged_df.groupby('lith_ids')
95
+ if groupby.ngroups == 0:
96
+ raise ValueError("No components found")
97
+ for lith, group in groupby:
95
98
  lith = int(lith)
96
99
  first_vertices = group.groupby('well_id').last().reset_index()
97
100
  array = first_vertices[['X', 'Y', 'Z']].values
@@ -131,12 +131,29 @@ class StructuredData:
131
131
  def values(self) -> np.ndarray:
132
132
  return self.data[self.active_data_array_name].values
133
133
 
134
+ _bounds: Tuple[float, float, float, float, float, float] = None
135
+
134
136
  @property
135
137
  def bounds(self):
138
+ if self._bounds is not None:
139
+ return self._bounds
140
+
136
141
  array_: xr.DataArray = self.data[self.active_data_array_name]
137
- bounds = self._get_bounds(array_)
142
+ bounds = self._get_bounds_from_coord(array_)
138
143
  return bounds
139
144
 
145
+ @bounds.setter
146
+ def bounds(self, bounds: Tuple[float, float, float, float, float, float]):
147
+ """
148
+ Set the bounds of the structured data. This is useful for defining the
149
+ spatial extent of the data in a structured grid.
150
+
151
+ Args:
152
+ bounds (Tuple[float, float, float, float, float, float]): A tuple containing
153
+ the minimum and maximum values for each dimension (xmin, xmax, ymin, ymax, zmin, zmax).
154
+ """
155
+ self._bounds = bounds
156
+
140
157
  @property
141
158
  def shape(self):
142
159
  return self.active_data_array.shape
@@ -146,7 +163,7 @@ class StructuredData:
146
163
  return self.data[self.active_data_array_name]
147
164
 
148
165
  @staticmethod
149
- def _get_bounds(xr_obj: xr.DataArray):
166
+ def _get_bounds_from_coord(xr_obj: xr.DataArray):
150
167
  bounds = {}
151
168
  for coord in xr_obj.coords:
152
169
  bounds[coord] = (xr_obj[coord].min().item(), xr_obj[coord].max().item())
@@ -47,7 +47,7 @@ def load_with_trimesh(path_to_file_or_buffer, file_type: Optional[str] = None,
47
47
  case TriMeshTransformations.RIGHT_HANDED_Z_UP_Y_REVERSED:
48
48
  # * Forward Z Up Y
49
49
  transform=np.array([
50
- [1, 0, 0, 0],
50
+ [-1, 0, 0, 0],
51
51
  [0, 0, 1, 0],
52
52
  [0, 1, 0, 0],
53
53
  [0, 0, 0, 1],
@@ -109,6 +109,10 @@ class LoadWithTrimesh:
109
109
  # If there's already an image reference in the material, let the user know
110
110
  if hasattr(material, 'image') and material.image is not None:
111
111
  print(" -> Material already has an image:", material.image)
112
+
113
+ if geometry.visual.uv is None:
114
+ raise ValueError("Geometry does not have UV coordinates for texture mapping, despite having a material."
115
+ "This can also happen if the geometry is given in quads instead of triangles.")
112
116
  else:
113
117
  print("No material found or no 'material' attribute on this geometry.")
114
118
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: subsurface_terra
3
- Version: 2025.1.0rc12
3
+ Version: 2025.1.0rc14
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