resqpy 4.8.1__tar.gz → 4.8.2__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (198) hide show
  1. {resqpy-4.8.1 → resqpy-4.8.2}/PKG-INFO +1 -1
  2. {resqpy-4.8.1 → resqpy-4.8.2}/pyproject.toml +1 -1
  3. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/__init__.py +1 -1
  4. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/triangulation.py +15 -6
  5. {resqpy-4.8.1 → resqpy-4.8.2}/LICENSE +0 -0
  6. {resqpy-4.8.1 → resqpy-4.8.2}/README.md +0 -0
  7. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/crs.py +0 -0
  8. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/derived_model/__init__.py +0 -0
  9. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/derived_model/_add_edges_per_column_property_array.py +0 -0
  10. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/derived_model/_add_faults.py +0 -0
  11. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/derived_model/_add_one_blocked_well_property.py +0 -0
  12. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/derived_model/_add_one_grid_property_array.py +0 -0
  13. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/derived_model/_add_single_cell_grid.py +0 -0
  14. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/derived_model/_add_wells_from_ascii_file.py +0 -0
  15. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/derived_model/_add_zone_by_layer_property.py +0 -0
  16. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/derived_model/_coarsened_grid.py +0 -0
  17. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/derived_model/_common.py +0 -0
  18. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/derived_model/_copy_grid.py +0 -0
  19. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/derived_model/_drape_to_surface.py +0 -0
  20. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/derived_model/_extract_box.py +0 -0
  21. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/derived_model/_extract_box_for_well.py +0 -0
  22. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/derived_model/_fault_throw_scaling.py +0 -0
  23. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/derived_model/_gather_ensemble.py +0 -0
  24. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/derived_model/_interpolated_grid.py +0 -0
  25. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/derived_model/_local_depth_adjustment.py +0 -0
  26. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/derived_model/_refined_grid.py +0 -0
  27. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/derived_model/_tilted_grid.py +0 -0
  28. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/derived_model/_unsplit_grid.py +0 -0
  29. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/derived_model/_zonal_grid.py +0 -0
  30. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/derived_model/_zone_layer_ranges_from_array.py +0 -0
  31. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/fault/__init__.py +0 -0
  32. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/fault/_gcs_functions.py +0 -0
  33. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/fault/_grid_connection_set.py +0 -0
  34. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid/__init__.py +0 -0
  35. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid/_cell_properties.py +0 -0
  36. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid/_connection_sets.py +0 -0
  37. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid/_create_grid_xml.py +0 -0
  38. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid/_defined_geometry.py +0 -0
  39. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid/_extract_functions.py +0 -0
  40. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid/_face_functions.py +0 -0
  41. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid/_faults.py +0 -0
  42. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid/_grid.py +0 -0
  43. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid/_grid_types.py +0 -0
  44. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid/_intervals_info.py +0 -0
  45. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid/_moved_functions.py +0 -0
  46. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid/_pillars.py +0 -0
  47. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid/_pixel_maps.py +0 -0
  48. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid/_points_functions.py +0 -0
  49. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid/_regular_grid.py +0 -0
  50. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid/_transmissibility.py +0 -0
  51. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid/_write_hdf5_from_caches.py +0 -0
  52. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid/_write_nexus_corp.py +0 -0
  53. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid/_xyz.py +0 -0
  54. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid_surface/__init__.py +0 -0
  55. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid_surface/_blocked_well_populate.py +0 -0
  56. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid_surface/_find_faces.py +0 -0
  57. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid_surface/_grid_skin.py +0 -0
  58. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid_surface/_grid_surface.py +0 -0
  59. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid_surface/_trajectory_intersects.py +0 -0
  60. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/grid_surface/grid_surface_cuda.py +0 -0
  61. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/lines/__init__.py +0 -0
  62. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/lines/_common.py +0 -0
  63. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/lines/_polyline.py +0 -0
  64. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/lines/_polyline_set.py +0 -0
  65. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/model/__init__.py +0 -0
  66. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/model/_catalogue.py +0 -0
  67. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/model/_context.py +0 -0
  68. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/model/_forestry.py +0 -0
  69. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/model/_grids.py +0 -0
  70. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/model/_hdf5.py +0 -0
  71. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/model/_model.py +0 -0
  72. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/model/_xml.py +0 -0
  73. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/multi_processing/__init__.py +0 -0
  74. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/multi_processing/_multiprocessing.py +0 -0
  75. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/multi_processing/wrappers/__init__.py +0 -0
  76. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/multi_processing/wrappers/blocked_well_mp.py +0 -0
  77. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/multi_processing/wrappers/grid_surface_mp.py +0 -0
  78. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/multi_processing/wrappers/mesh_mp.py +0 -0
  79. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/__init__.py +0 -0
  80. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/ab_toolbox.py +0 -0
  81. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/base.py +0 -0
  82. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/box_utilities.py +0 -0
  83. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/class_dict.py +0 -0
  84. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/consolidation.py +0 -0
  85. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/data/build.py +0 -0
  86. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/data/properties.json +0 -0
  87. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/dataframe.py +0 -0
  88. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/exceptions.py +0 -0
  89. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/factors.py +0 -0
  90. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/fine_coarse.py +0 -0
  91. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/grid_functions.py +0 -0
  92. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/intersection.py +0 -0
  93. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/keyword_files.py +0 -0
  94. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/load_data.py +0 -0
  95. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/point_inclusion.py +0 -0
  96. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/random_seed.py +0 -0
  97. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/read_nexus_fault.py +0 -0
  98. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/relperm.py +0 -0
  99. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/simple_lines.py +0 -0
  100. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/time.py +0 -0
  101. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/trademark.py +0 -0
  102. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/transmission.py +0 -0
  103. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/uuid.py +0 -0
  104. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/vdb.py +0 -0
  105. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/vector_utilities.py +0 -0
  106. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/volume.py +0 -0
  107. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/wellspec_keywords.py +0 -0
  108. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/write_data.py +0 -0
  109. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/write_hdf5.py +0 -0
  110. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/xml_et.py +0 -0
  111. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/xml_namespaces.py +0 -0
  112. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/olio/zmap_reader.py +0 -0
  113. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/organize/__init__.py +0 -0
  114. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/organize/_utils.py +0 -0
  115. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/organize/boundary_feature.py +0 -0
  116. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/organize/boundary_feature_interpretation.py +0 -0
  117. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/organize/earth_model_interpretation.py +0 -0
  118. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/organize/fault_interpretation.py +0 -0
  119. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/organize/fluid_boundary_feature.py +0 -0
  120. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/organize/frontier_feature.py +0 -0
  121. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/organize/generic_interpretation.py +0 -0
  122. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/organize/genetic_boundary_feature.py +0 -0
  123. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/organize/geobody_boundary_interpretation.py +0 -0
  124. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/organize/geobody_feature.py +0 -0
  125. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/organize/geobody_interpretation.py +0 -0
  126. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/organize/geologic_unit_feature.py +0 -0
  127. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/organize/horizon_interpretation.py +0 -0
  128. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/organize/organization_feature.py +0 -0
  129. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/organize/rock_fluid_unit_feature.py +0 -0
  130. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/organize/structural_organization_interpretation.py +0 -0
  131. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/organize/tectonic_boundary_feature.py +0 -0
  132. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/organize/wellbore_feature.py +0 -0
  133. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/organize/wellbore_interpretation.py +0 -0
  134. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/property/__init__.py +0 -0
  135. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/property/_collection_add_part.py +0 -0
  136. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/property/_collection_create_xml.py +0 -0
  137. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/property/_collection_get_attributes.py +0 -0
  138. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/property/_collection_support.py +0 -0
  139. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/property/_property.py +0 -0
  140. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/property/grid_property_collection.py +0 -0
  141. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/property/property_collection.py +0 -0
  142. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/property/property_common.py +0 -0
  143. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/property/property_kind.py +0 -0
  144. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/property/string_lookup.py +0 -0
  145. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/property/well_interval_property.py +0 -0
  146. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/property/well_interval_property_collection.py +0 -0
  147. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/property/well_log.py +0 -0
  148. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/property/well_log_collection.py +0 -0
  149. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/rq_import/__init__.py +0 -0
  150. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/rq_import/_add_ab_properties.py +0 -0
  151. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/rq_import/_add_surfaces.py +0 -0
  152. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/rq_import/_grid_from_cp.py +0 -0
  153. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/rq_import/_import_nexus.py +0 -0
  154. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/rq_import/_import_vdb_all_grids.py +0 -0
  155. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/rq_import/_import_vdb_ensemble.py +0 -0
  156. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/strata/__init__.py +0 -0
  157. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/strata/_binary_contact_interpretation.py +0 -0
  158. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/strata/_geologic_unit_interpretation.py +0 -0
  159. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/strata/_strata_common.py +0 -0
  160. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/strata/_stratigraphic_column.py +0 -0
  161. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/strata/_stratigraphic_column_rank.py +0 -0
  162. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/strata/_stratigraphic_unit_feature.py +0 -0
  163. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/strata/_stratigraphic_unit_interpretation.py +0 -0
  164. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/surface/__init__.py +0 -0
  165. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/surface/_base_surface.py +0 -0
  166. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/surface/_combined_surface.py +0 -0
  167. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/surface/_mesh.py +0 -0
  168. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/surface/_pointset.py +0 -0
  169. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/surface/_surface.py +0 -0
  170. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/surface/_tri_mesh.py +0 -0
  171. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/surface/_triangulated_patch.py +0 -0
  172. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/time_series/__init__.py +0 -0
  173. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/time_series/_any_time_series.py +0 -0
  174. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/time_series/_from_nexus_summary.py +0 -0
  175. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/time_series/_functions.py +0 -0
  176. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/time_series/_geologic_time_series.py +0 -0
  177. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/time_series/_time_duration.py +0 -0
  178. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/time_series/_time_series.py +0 -0
  179. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/unstructured/__init__.py +0 -0
  180. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/unstructured/_hexa_grid.py +0 -0
  181. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/unstructured/_prism_grid.py +0 -0
  182. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/unstructured/_pyramid_grid.py +0 -0
  183. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/unstructured/_tetra_grid.py +0 -0
  184. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/unstructured/_unstructured_grid.py +0 -0
  185. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/weights_and_measures/__init__.py +0 -0
  186. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/weights_and_measures/nexus_units.py +0 -0
  187. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/weights_and_measures/weights_and_measures.py +0 -0
  188. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/well/__init__.py +0 -0
  189. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/well/_blocked_well.py +0 -0
  190. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/well/_deviation_survey.py +0 -0
  191. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/well/_md_datum.py +0 -0
  192. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/well/_trajectory.py +0 -0
  193. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/well/_wellbore_frame.py +0 -0
  194. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/well/_wellbore_marker.py +0 -0
  195. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/well/_wellbore_marker_frame.py +0 -0
  196. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/well/blocked_well_frame.py +0 -0
  197. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/well/well_object_funcs.py +0 -0
  198. {resqpy-4.8.1 → resqpy-4.8.2}/resqpy/well/well_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: resqpy
3
- Version: 4.8.1
3
+ Version: 4.8.2
4
4
  Summary: Python API for working with RESQML models
5
5
  Home-page: https://github.com/bp/resqpy
6
6
  License: MIT
@@ -9,7 +9,7 @@ build-backend = "poetry.masonry.api"
9
9
 
10
10
  [tool.poetry]
11
11
  name = "resqpy"
12
- version = "4.8.1" # Set at build time
12
+ version = "4.8.2" # Set at build time
13
13
  description = "Python API for working with RESQML models"
14
14
  authors = ["BP"]
15
15
  license = "MIT"
@@ -28,6 +28,6 @@
28
28
 
29
29
  import logging
30
30
 
31
- __version__ = "4.8.1" # Set at build time
31
+ __version__ = "4.8.2" # Set at build time
32
32
  log = logging.getLogger(__name__)
33
33
  log.info(f"Imported resqpy version {__version__}")
@@ -726,7 +726,7 @@ def triangulated_polygons(p, v, centres = None):
726
726
  return points, triangles
727
727
 
728
728
 
729
- def reorient(points, rough = True, max_dip = None, use_linalg = True):
729
+ def reorient(points, rough = True, max_dip = None, use_linalg = True, sample = 500):
730
730
  """Returns a reoriented copy of a set of points, such that z axis is approximate normal to average plane of points.
731
731
 
732
732
  arguments:
@@ -736,6 +736,7 @@ def reorient(points, rough = True, max_dip = None, use_linalg = True):
736
736
  max_dip (float, optional): if present, the reorientation of perspective off vertical is
737
737
  limited to this angle in degrees
738
738
  use_linalg (bool, default True): if True, the numpy linear algebra svd function is used and rough is ignored
739
+ sample (int, default 500): downsample points to this number for the purposes of determining normal vector
739
740
 
740
741
  returns:
741
742
  numpy float array of the same shape as points, numpy xyz vector, numpy 3x3 matrix;
@@ -748,7 +749,9 @@ def reorient(points, rough = True, max_dip = None, use_linalg = True):
748
749
  implicit xy & z units for points are assumed to be the same;
749
750
  the function may typically be called prior to the Delauney triangulation, which uses an xy projection to
750
751
  determine the triangulation;
751
- the numpy linear algebra option seems to be memory intensive, not recommended
752
+ the numpy linear algebra option seems to be memory intensive, not recommended;
753
+ downsampling will occur (for normal vector determination) when the number of points exceeds double that
754
+ given in the sample argument; set sample to None to use all points for normal vector determination
752
755
  """
753
756
 
754
757
  def best_angles(points, mid_x, mid_y, steps, d_theta):
@@ -780,8 +783,14 @@ def reorient(points, rough = True, max_dip = None, use_linalg = True):
780
783
 
781
784
  assert points.ndim >= 2 and points.shape[-1] == 3
782
785
 
786
+ if sample is not None and len(points) > 2 * sample:
787
+ step = len(points) // sample
788
+ p = points[::step, :]
789
+ else:
790
+ p = points
791
+
783
792
  if use_linalg:
784
- normal_vector = linalg_normal_vector(points)
793
+ normal_vector = linalg_normal_vector(p)
785
794
  incl = vec.inclination(normal_vector)
786
795
  if incl == 0.0:
787
796
  rotation_m = vec.no_rotation_matrix()
@@ -790,14 +799,14 @@ def reorient(points, rough = True, max_dip = None, use_linalg = True):
790
799
  rotation_m = vec.tilt_3d_matrix(azi, incl)
791
800
  else:
792
801
  # coarse iteration trying a few different angles
793
- best_x_rotation, best_y_rotation = best_angles(points, 0.0, 0.0, 7, 30.0)
802
+ best_x_rotation, best_y_rotation = best_angles(p, 0.0, 0.0, 7, 30.0)
794
803
 
795
804
  # finer iteration searching around the best coarse rotation
796
- best_x_rotation, best_y_rotation = best_angles(points, best_x_rotation, best_y_rotation, 5, 10.0)
805
+ best_x_rotation, best_y_rotation = best_angles(p, best_x_rotation, best_y_rotation, 5, 10.0)
797
806
 
798
807
  if not rough:
799
808
  # finer iteration searching around the best coarse rotation
800
- best_x_rotation, best_y_rotation = best_angles(points, best_x_rotation, best_y_rotation, 7, 2.5)
809
+ best_x_rotation, best_y_rotation = best_angles(p, best_x_rotation, best_y_rotation, 7, 2.5)
801
810
 
802
811
  rotation_m = vec.rotation_3d_matrix((best_x_rotation, 0.0, best_y_rotation))
803
812
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes