gempy
gempy copied to clipboard
Build 3D geological model from borehole data
Dear GemPyers,
I'm now trying to build 3D geological model using Gempy from borehole data. I follow the Tutorial: Transform 2019: Integrating Striplog and GemPy, and replace the data with mine.
I coded the surface like #669, for example:
when I plot the surface points in 2D, it was like:
But when I compute the model, I got this error:
I don't know weather there were somthing wrong with my input data? or I miss some processing steps?
Could you please help me?
Thank you in advance!
`---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
File scan_perform.pyx:397, in theano.scan_module.scan_perform.perform()
IndexError: index 55 is out of bounds for axis 0 with size 55
During handling of the above exception, another exception occurred:
IndexError Traceback (most recent call last)
File D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\theano\compile\function_module.py:903, in Function.call(self, *args, **kwargs)
901 try:
902 outputs =
--> 903 self.fn() if output_subset is None else
904 self.fn(output_subset=output_subset)
905 except Exception:
File D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\theano\scan_module\scan_op.py:963, in Scan.make_thunk.
File scan_perform.pyx:405, in theano.scan_module.scan_perform.perform() File D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\theano\gof\link.py:325, in raise_with_op(node, thunk, exc_info, storage_map) 324 pass --> 325 reraise(exc_type, exc_value, exc_trace)
File D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\six.py:718, in reraise(tp, value, tb) 717 if value.traceback is not tb: --> 718 raise value.with_traceback(tb) 719 raise value
File scan_perform.pyx:397, in theano.scan_module.scan_perform.perform()
IndexError: index 55 is out of bounds for axis 0 with size 55
Apply node that caused the error: AdvancedSubtensor1(Subtensor{int64:int64:}.0, Subtensor{int32:int32:}.0)
Toposort index: 661
Inputs types: [TensorType(float64, vector), TensorType(int32, vector)]
Inputs shapes: [(55,), (22,)]
Inputs strides: [(8,), (4,)]
Inputs values: ['not shown', 'not shown']
Inputs type_num: [12, 7]
Outputs clients: [[Join(TensorConstant{0}, TensorConstant{(1,) of 0}, AdvancedSubtensor1.0, TensorConstant{(1,) of 0}), Join(TensorConstant{0}, MakeVector{dtype='float64'}.0, AdvancedSubtensor1.0, MakeVector{dtype='float64'}.0), AdvancedIncSubtensor{inplace=False, set_instead_of_inc=True}(<TensorType(float64, matrix)>, AdvancedSubtensor1.0, <TensorType(int32, scalar)>, Elemwise{sub,no_inplace}.0), Elemwise{neg,no_inplace}(AdvancedSubtensor1.0), MaxAndArgmax{axis=(0,)}(AdvancedSubtensor1.0)]]
Backtrace when the node is created(use Theano flag traceback.limit=N to make it longer):
File "C:\Users\86135\AppData\Local\Temp\ipykernel_16780\2969753639.py", line 1, in <cell line: 1>
gp.set_interpolator(geo_model)
File "D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\gempy\api_modules\setters.py", line 108, in set_interpolator
geo_model._interpolator.compile_th_fn_geo(inplace=True, grid=grid)
File "D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\gempy\core\interpolator.py", line 1124, in compile_th_fn_geo
self.theano_graph.theano_output(),
File "D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\gempy\core\theano_modules\theano_graph_pro.py", line 631, in theano_output
solutions[:9] = self.compute_series()
File "D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\gempy\core\theano_modules\theano_graph_pro.py", line 465, in compute_series
series, self.updates1 = theano.scan(
File "D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\theano\scan_module\scan.py", line 774, in scan
condition, outputs, updates = scan_utils.get_updates_and_outputs(fn(*args))
File "D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\gempy\core\theano_modules\theano_graph_pro.py", line 2148, in compute_a_series
scalar_field_at_surface_points = self.get_scalar_field_at_surface_points(Z_x,
File "D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\gempy\core\theano_modules\theano_graph_pro.py", line 1756, in get_scalar_field_at_surface_points
Z_x[-2 * self.len_points: -self.len_points][npf_op]
Debugprint of the apply node:
AdvancedSubtensor1 [id A] <TensorType(float64, vector)> ''
|Subtensor{int64:int64:} [id B] <TensorType(float64, vector)> ''
| |if{} [id C] <TensorType(float64, vector)> ''
| | |Vector controlling if scalar matrix must be recomputed[t] [id D] <TensorType(bool, scalar)>
| | |Subtensor{int64} [id E] <TensorType(float64, vector)> 'Value of the potential field at every point'
| | |Subtensor{int32} [id F] <TensorType(float64, vector)> ''
| | |Scalar matrix[t-1] [id G] <TensorType(float64, matrix)>
| | |ScalarFromTensor [id H]
| | |<TensorType(int32, scalar)> [id I] <TensorType(int32, scalar)>
| |ScalarFromTensor [id J]
| | |Elemwise{mul,no_inplace} [id K] <TensorType(int64, scalar)> ''
| | |TensorConstant{-2} [id L] <TensorType(int8, scalar)>
| | |Elemwise{sub,no_inplace} [id M] <TensorType(int64, scalar)> ''
| | |Subtensor{int64} [id N] <TensorType(int64, scalar)> ''
| | | |Shape [id O] <TensorType(int64, vector)> ''
| | | | |All the surface_points points at once_copy [id P] <TensorType(float64, matrix)>
| | | |Constant{0} [id Q]
| | |Shape [id S] <TensorType(int64, vector)> ''
| | | |Number of points per surface used to split rest-ref_copy [id T] <TensorType(int32, vector)>
| | |Constant{0} [id Q]
| |Elemwise{neg,no_inplace} [id V] <TensorType(int64, scalar)> ''
| |Elemwise{sub,no_inplace} [id M] <TensorType(int64, scalar)> ''
|Subtensor{int32:int32:} [id W] <TensorType(int32, vector)> ''
|CumOp{None, add} [id X] <TensorType(int32, vector)> 'Number of points per surfaces after rest-ref. This is used for finding the differentsurface points withing a layer.'
|ScalarFromTensor [id Y]
| |List with the number of surfaces[t] [id Z] <TensorType(int32, scalar)>
|ScalarFromTensor [id BA]
|List with the number of surfaces[t+1] [id BB] <TensorType(int32, scalar)>
HINT: Use the Theano flag 'exception_verbosity=high' for a debugprint and storage map footprint of this apply node.
During handling of the above exception, another exception occurred: IndexError Traceback (most recent call last) d:\Study[1](vscode-notebook-cell:/d%3A/Study/1_LandslidesGroupWork/3DGM/Gempy/gempy-master/gempy-master/notebooks/test_ags4.ipynb#ch0000022?line=0)_LandslidesGroupWork\3DGM\Gempy\gempy-master\gempy-master\notebooks\test_ags4.ipynb Cell 24' in <cell line: 1>() ----> 1 gp.compute_model(geo_model)
File D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\gempy\gempy_api.py:291, in compute_model(model, output, at, compute_mesh, reset_weights, reset_scalar, reset_block, sort_surfaces, debug, set_solutions, **kwargs) 288 i = model._interpolator.get_python_input_block(append_control=True, fault_drift=None) 289 model._interpolator.reset_flow_control_initial_results(reset_weights, reset_scalar, reset_block) --> 291 sol = model._interpolator.theano_function(*i) 293 if debug is True or set_solutions is False: 294 return sol
File D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\theano\compile\function_module.py:914, in Function.call(self, *args, **kwargs) 912 if hasattr(self.fn, 'thunks'): 913 thunk = self.fn.thunks[self.fn.position_of_error] --> 914 gof.link.raise_with_op( 915 node=self.fn.nodes[self.fn.position_of_error], 916 thunk=thunk, 917 storage_map=getattr(self.fn, 'storage_map', None)) 918 else: 919 # old-style linkers raise their own exceptions 920 raise
File D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\theano\gof\link.py:325, in raise_with_op(node, thunk, exc_info, storage_map) 322 # Some exception need extra parameter in inputs. So forget the 323 # extra long error message in that case. 324 pass --> 325 reraise(exc_type, exc_value, exc_trace) File D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\six.py:718, in reraise(tp, value, tb) 716 value = tp() 717 if value.traceback is not tb: --> 718 raise value.with_traceback(tb) 719 raise value 720 finally:
File D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\theano\compile\function_module.py:903, in Function.call(self, *args, **kwargs)
900 t0_fn = time.time()
901 try:
902 outputs =
--> 903 self.fn() if output_subset is None else
904 self.fn(output_subset=output_subset)
905 except Exception:
906 restore_defaults()
File D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\theano\scan_module\scan_op.py:963, in Scan.make_thunk.
File scan_perform.pyx:405, in theano.scan_module.scan_perform.perform() File D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\theano\gof\link.py:325, in raise_with_op(node, thunk, exc_info, storage_map) 322 # Some exception need extra parameter in inputs. So forget the 323 # extra long error message in that case. 324 pass --> 325 reraise(exc_type, exc_value, exc_trace)
File D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\six.py:718, in reraise(tp, value, tb) 716 value = tp() 717 if value.traceback is not tb: --> 718 raise value.with_traceback(tb) 719 raise value 720 finally:
File scan_perform.pyx:397, in theano.scan_module.scan_perform.perform()
IndexError: index 55 is out of bounds for axis 0 with size 55 Apply node that caused the error: AdvancedSubtensor1(Subtensor{int64:int64:}.0, Subtensor{int32:int32:}.0) Toposort index: 661 Inputs types: [TensorType(float64, vector), TensorType(int32, vector)] Inputs shapes: [(55,), (22,)] Inputs strides: [(8,), (4,)] Inputs values: ['not shown', 'not shown'] Inputs type_num: [12, 7] Outputs clients: [[Join(TensorConstant{0}, TensorConstant{(1,) of 0}, AdvancedSubtensor1.0, TensorConstant{(1,) of 0}), Join(TensorConstant{0}, MakeVector{dtype='float64'}.0, AdvancedSubtensor1.0, MakeVector{dtype='float64'}.0), AdvancedIncSubtensor{inplace=False, set_instead_of_inc=True}(<TensorType(float64, matrix)>, AdvancedSubtensor1.0, <TensorType(int32, scalar)>, Elemwise{sub,no_inplace}.0), Elemwise{neg,no_inplace}(AdvancedSubtensor1.0), MaxAndArgmax{axis=(0,)}(AdvancedSubtensor1.0)]] Backtrace when the node is created(use Theano flag traceback.limit=N to make it longer): File "C:\Users\86135\AppData\Local\Temp\ipykernel_16780\2969753639.py", line 1, in <cell line: 1> gp.set_interpolator(geo_model) File "D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\gempy\api_modules\setters.py", line 108, in set_interpolator geo_model._interpolator.compile_th_fn_geo(inplace=True, grid=grid) File "D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\gempy\core\interpolator.py", line 1124, in compile_th_fn_geo self.theano_graph.theano_output(), File "D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\gempy\core\theano_modules\theano_graph_pro.py", line 631, in theano_output solutions[:9] = self.compute_series() File "D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\gempy\core\theano_modules\theano_graph_pro.py", line 465, in compute_series series, self.updates1 = theano.scan( File "D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\theano\scan_module\scan.py", line 774, in scan condition, outputs, updates = scan_utils.get_updates_and_outputs(fn(*args)) File "D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\gempy\core\theano_modules\theano_graph_pro.py", line 2148, in compute_a_series scalar_field_at_surface_points = self.get_scalar_field_at_surface_points(Z_x, File "D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\gempy\core\theano_modules\theano_graph_pro.py", line 1756, in get_scalar_field_at_surface_points Z_x[-2 * self.len_points: -self.len_points][npf_op]
Debugprint of the apply node:
AdvancedSubtensor1 [id A] <TensorType(float64, vector)> ''
|Subtensor{int64:int64:} [id B] <TensorType(float64, vector)> ''
| |if{} [id C] <TensorType(float64, vector)> ''
| | |Vector controlling if scalar matrix must be recomputed[t] [id D] <TensorType(bool, scalar)>
| | |Subtensor{int64} [id E] <TensorType(float64, vector)> 'Value of the potential field at every point'
| | |Subtensor{int32} [id F] <TensorType(float64, vector)> ''
| | |Scalar matrix[t-1] [id G] <TensorType(float64, matrix)>
| | |ScalarFromTensor [id H]
| | |<TensorType(int32, scalar)> [id I] <TensorType(int32, scalar)>
| |ScalarFromTensor [id J]
| | |Elemwise{mul,no_inplace} [id K] <TensorType(int64, scalar)> ''
| | |TensorConstant{-2} [id L] <TensorType(int8, scalar)>
| | |Elemwise{sub,no_inplace} [id M] <TensorType(int64, scalar)> ''
| | |Subtensor{int64} [id N] <TensorType(int64, scalar)> ''
| | | |Shape [id O] <TensorType(int64, vector)> ''
| | | | |All the surface_points points at once_copy [id P] <TensorType(float64, matrix)>
| | | |Constant{0} [id Q]
| | |Shape [id S] <TensorType(int64, vector)> ''
| | | |Number of points per surface used to split rest-ref_copy [id T] <TensorType(int32, vector)>
| | |Constant{0} [id Q]
| |Elemwise{neg,no_inplace} [id V] <TensorType(int64, scalar)> ''
| |Elemwise{sub,no_inplace} [id M] <TensorType(int64, scalar)> ''
|Subtensor{int32:int32:} [id W] <TensorType(int32, vector)> ''
|CumOp{None, add} [id X] <TensorType(int32, vector)> 'Number of points per surfaces after rest-ref. This is used for finding the differentsurface points withing a layer.'
|ScalarFromTensor [id Y]
| |List with the number of surfaces[t] [id Z] <TensorType(int32, scalar)>
|ScalarFromTensor [id BA]
|List with the number of surfaces[t+1] [id BB] <TensorType(int32, scalar)>
HINT: Use the Theano flag 'exception_verbosity=high' for a debugprint and storage map footprint of this apply node.
Apply node that caused the error: for{cpu,Looping}(Elemwise{minimum,no_inplace}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, IncSubtensor{Set;:int64:}.0, IncSubtensor{Set;:int64:}.0, IncSubtensor{Set;:int64:}.0, IncSubtensor{Set;:int64:}.0, IncSubtensor{Set;:int64:}.0, IncSubtensor{Set;:int64:}.0, IncSubtensor{Set;:int64:}.0, IncSubtensor{Set;:int64:}.0, Number of points per surface used to split rest-ref, fault relation matrix, <TensorType(float64, scalar)>, <TensorType(float64, scalar)>, <TensorType(float64, scalar)>, Nugget effect of gradients, Nugget effect of scalar, Attenuation factor, Sigmoid Outside, Sigmoid slope, <TensorType(int32, vector)>, <TensorType(bool, vector)>, <TensorType(int32, vector)>, Coordinates of the grid points to interpolate, All the surface_points points at once, Position of the dips, Angle of every dip, Azimuth, Polarity, Values that the blocks are taking)
Toposort index: 167
Inputs types: [TensorType(int64, scalar), TensorType(int32, vector), TensorType(int32, vector), TensorType(int32, vector), TensorType(int32, vector), TensorType(int32, vector), TensorType(int32, vector), TensorType(int32, vector), TensorType(int32, vector), TensorType(int32, vector), TensorType(bool, vector), TensorType(bool, vector), TensorType(bool, vector), TensorType(int32, vector), TensorType(int32, vector), TensorType(int32, vector), TensorType(int32, vector), TensorType(float64, vector), TensorType(float64, vector), TensorType(float64, 4D), TensorType(float64, matrix), TensorType(float64, 3D), TensorType(float64, 3D), TensorType(bool, 3D), TensorType(bool, 3D), TensorType(float64, 4D), TensorType(int64, vector), TensorType(int32, vector), TensorType(int32, matrix), TensorType(float64, scalar), TensorType(float64, scalar), TensorType(float64, scalar), TensorType(float64, vector), TensorType(float64, vector), TensorType(float64, scalar), TensorType(float64, scalar), TensorType(float64, scalar), TensorType(int32, vector), TensorType(bool, vector), TensorType(int32, vector), TensorType(float64, matrix), TensorType(float64, matrix), TensorType(float64, matrix), TensorType(float64, vector), TensorType(float64, vector), TensorType(float64, vector), TensorType(float64, matrix)]
Inputs shapes: [(), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (2, 1, 1, 125110), (2, 61), (2, 1, 125110), (2, 1, 22), (2, 1, 125110), (2, 1, 125110), (2, 1, 1, 125110), (2,), (22,), (1, 1), (), (), (), (3,), (77,), (), (), (), (1,), (1,), (1,), (125000, 3), (77, 3), (1, 3), (1,), (1,), (1,), (1, 23)]
Inputs strides: [(), (4,), (4,), (4,), (4,), (4,), (4,), (4,), (4,), (4,), (1,), (1,), (1,), (4,), (4,), (4,), (4,), (8,), (8,), (1000880, 1000880, 1000880, 8), (488, 8), (1000880, 1000880, 8), (176, 176, 8), (125110, 125110, 1), (125110, 125110, 1), (1000880, 1000880, 1000880, 8), (8,), (4,), (4, 4), (), (), (), (8,), (8,), (), (), (), (4,), (1,), (4,), (24, 8), (8, 616), (24, 8), (8,), (8,), (8,), (184, 8)]
Inputs values: [array(1, dtype=int64), array([0]), array([55]), array([0]), array([1]), array([0]), array([61]), array([0]), array([22]), array([3]), array([ True]), array([ True]), array([ True]), array([0]), array([0]), array([0]), array([0]), array([0.00166292]), array([0.10805296]), 'not shown', 'not shown', 'not shown', 'not shown', 'not shown', 'not shown', 'not shown', array([ 0, 61], dtype=int64), 'not shown', array([[0]]), array(10.), array(2.), array(4.), array([0.01, 0.01, 0.01]), 'not shown', array(2.), array(50.), array(50000.), array([0]), array([False]), array([0]), 'not shown', 'not shown', array([[0.25042929, 0.2501 , 0.50028359]]), array([0.]), array([0.]), array([1.]), 'not shown']
Inputs type_num: [9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 7, 7, 7, 7, 12, 12, 12, 12, 12, 12, 0, 0, 12, 9, 7, 7, 12, 12, 12, 12, 12, 12, 12, 12, 7, 0, 7, 12, 12, 12, 12, 12, 12, 12]
Outputs clients: [[Subtensor{int64::}(for{cpu,Looping}.0, Constant{1})], [Subtensor{int64::}(for{cpu,Looping}.1, Constant{1})], [Subtensor{int64::}(for{cpu,Looping}.2, Constant{1})], [Subtensor{int64::}(for{cpu,Looping}.3, Constant{1})], [Subtensor{int64::}(for{cpu,Looping}.4, Constant{1})], [Subtensor{int64::}(for{cpu,Looping}.5, Constant{1})], [], []]
Backtrace when the node is created(use Theano flag traceback.limit=N to make it longer):
File "D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\IPython\core\interactiveshell.py", line 3098, in run_cell_async
has_raised = await self.run_ast_nodes(code_ast.body, cell_name,
File "D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\IPython\core\interactiveshell.py", line 3301, in run_ast_nodes
if await self.run_code(code, result, async_=asy):
File "D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\IPython\core\interactiveshell.py", line 3361, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "C:\Users\86135\AppData\Local\Temp\ipykernel_16780\2969753639.py", line 1, in <cell line: 1>
gp.set_interpolator(geo_model)
File "D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\gempy\api_modules\setters.py", line 108, in set_interpolator
geo_model._interpolator.compile_th_fn_geo(inplace=True, grid=grid)
File "D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\gempy\core\interpolator.py", line 1124, in compile_th_fn_geo
self.theano_graph.theano_output(),
File "D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\gempy\core\theano_modules\theano_graph_pro.py", line 631, in theano_output
solutions[:9] = self.compute_series()
File "D:\Software\Anaconda3\envs\gempy_new\lib\site-packages\gempy\core\theano_modules\theano_graph_pro.py", line 465, in compute_series
series, self.updates1 = theano.scan(
Debugprint of the apply node:
for{cpu,Looping}.0 [id A] <TensorType(float64, 4D)> ''
|Elemwise{minimum,no_inplace} [id B] <TensorType(int64, scalar)> ''
| |Elemwise{minimum,no_inplace} [id C] <TensorType(int64, scalar)> ''
| | |Elemwise{minimum,no_inplace} [id D] <TensorType(int64, scalar)> ''
| | | |Elemwise{minimum,no_inplace} [id E] <TensorType(int64, scalar)> ''
| | | | |Elemwise{minimum,no_inplace} [id F] <TensorType(int64, scalar)> ''
| | | | | |Elemwise{minimum,no_inplace} [id G] <TensorType(int64, scalar)> ''
| | | | | | |Elemwise{minimum,no_inplace} [id H] <TensorType(int64, scalar)> ''
| | | | | | | |Elemwise{minimum,no_inplace} [id I] <TensorType(int64, scalar)> ''
| | | | | | | | |Elemwise{minimum,no_inplace} [id J] <TensorType(int64, scalar)> ''
| | | | | | | | | |Elemwise{minimum,no_inplace} [id K] <TensorType(int64, scalar)> ''
| | | | | | | | | | |Elemwise{minimum,no_inplace} [id L] <TensorType(int64, scalar)> ''
| | | | | | | | | | | |Elemwise{minimum,no_inplace} [id M] <TensorType(int64, scalar)> ''
| | | | | | | | | | | | |Elemwise{minimum,no_inplace} [id N] <TensorType(int64, scalar)> ''
| | | | | | | | | | | | | |Elemwise{minimum,no_inplace} [id O] <TensorType(int64, scalar)> ''
| | | | | | | | | | | | | | |Elemwise{minimum,no_inplace} [id P] <TensorType(int64, scalar)> ''
| | | | | | | | | | | | | | | |Elemwise{minimum,no_inplace} [id Q] <TensorType(int64, scalar)> ''
| | | | | | | | | | | | | | | | |Elemwise{minimum,no_inplace} [id R] <TensorType(int64, scalar)> ''
| | | | | | | | | | | | | | | | | |Subtensor{int64} [id S] <TensorType(int64, scalar)> ''
| | | | | | | | | | | | | | | | | | |Shape [id T] <TensorType(int64, vector)> ''
| | | | | | | | | | | | | | | | | | | |Subtensor{int64:int64:} [id U] <TensorType(int32, vector)> 'Length of surface_points in every series[0:-1]'
| | | | | | | | | | | | | | | | | | |Constant{0} [id V]
| | | | | | | | | | | | | | | | | |Shape [id X] <TensorType(int64, vector)> ''
| | | | | | | | | | | | | | | | | | |Subtensor{int64::} [id Y] <TensorType(int32, vector)> 'Length of surface_points in every series[1:]'
| | | | | | | | | | | | | | | | | |Constant{0} [id V]
| | | | | | | | | | | | | | | | |Shape [id BA] <TensorType(int64, vector)> ''
| | | | | | | | | | | | | | | | | |Subtensor{int64:int64:} [id BB] <TensorType(int32, vector)> 'Length of foliations in every series[0:-1]'
| | | | | | | | | | | | | | | | |Constant{0} [id V]
| | | | | | | | | | | | | | | |Shape [id BD] <TensorType(int64, vector)> ''
| | | | | | | | | | | | | | | | |Subtensor{int64::} [id BE] <TensorType(int32, vector)> 'Length of foliations in every series[1:]'
| | | | | | | | | | | | | | | |Constant{0} [id V]
| | | | | | | | | | | | | | |Shape [id BG] <TensorType(int64, vector)> ''
| | | | | | | | | | | | | | | |Subtensor{int64:int64:} [id BH] <TensorType(int32, vector)> 'Length of weights in every series[0:-1]'
| | | | | | | | | | | | | | |Constant{0} [id V]
| | | | | | | | | | | | | |Shape [id BJ] <TensorType(int64, vector)> ''
| | | | | | | | | | | | | | |Subtensor{int64::} [id BK] <TensorType(int32, vector)> 'Length of weights in every series[1:]'
| | | | | | | | | | | | | |Constant{0} [id V]
| | | | | | | | | | | | |Shape [id BM] <TensorType(int64, vector)> ''
| | | | | | | | | | | | | |Subtensor{int64:int64:} [id BN] <TensorType(int32, vector)> 'List with the number of surfaces[0:-1]'
| | | | | | | | | | | | |Constant{0} [id V]
| | | | | | | | | | | |Shape [id BP] <TensorType(int64, vector)> ''
| | | | | | | | | | | | |Subtensor{int64::} [id BQ] <TensorType(int32, vector)> 'List with the number of surfaces[1:]'
| | | | | | | | | | | |Constant{0} [id V]
| | | | | | | | | | |Shape [id BS] <TensorType(int64, vector)> ''
| | | | | | | | | | | |Subtensor{int64::} [id BT] <TensorType(int32, vector)> 'Grade of the universal drift[0:]'
| | | | | | | | | | |Constant{0} [id V]
| | | | | | | | | |Shape [id BV] <TensorType(int64, vector)> ''
| | | | | | | | | | |Subtensor{int64::} [id BW] <TensorType(bool, vector)> 'Vector controlling if weights must be recomputed[0:]'
| | | | | | | | | |Constant{0} [id V]
| | | | | | | | |Shape [id BY] <TensorType(int64, vector)> ''
| | | | | | | | | |Subtensor{int64::} [id BZ] <TensorType(bool, vector)> 'Vector controlling if scalar matrix must be recomputed[0:]'
| | | | | | | | |Constant{0} [id V]
| | | | | | | |Shape [id CB] <TensorType(int64, vector)> ''
| | | | | | | | |Subtensor{int64::} [id CC] <TensorType(bool, vector)> 'Vector controlling if block matrix must be recomputed[0:]'
| | | | | | | |Constant{0} [id V]
| | | | | | |Shape [id CE] <TensorType(int64, vector)> ''
| | | | | | | |Subtensor{int64::} [id CF] <TensorType(int32, vector)> 'The series (fault) is finite[0:]'
| | | | | | |Constant{0} [id V]
| | | | | |Shape [id CH] <TensorType(int64, vector)> ''
| | | | | | |Subtensor{int64::} [id CI] <TensorType(int32, vector)> ''
| | | | | | |<TensorType(int32, vector)> [id CJ] <TensorType(int32, vector)>
| | | | | | |Constant{0} [id V]
| | | | |Shape [id CL] <TensorType(int64, vector)> ''
| | | | | |Subtensor{int64::} [id CM] <TensorType(int32, vector)> ''
| | | | | |<TensorType(int32, vector)> [id CN] <TensorType(int32, vector)>
| | | | | |Constant{0} [id V]
| | |Shape [id CQ] <TensorType(int64, vector)> ''
| | | |Subtensor{int64::} [id CR] <TensorType(float64, vector)> 'Range[0:]'
| | |Constant{0} [id V]
| |Shape [id CT] <TensorType(int64, vector)> ''
| | |Subtensor{int64::} [id CU] <TensorType(float64, vector)> 'Covariance at 0[0:]'
| |Constant{0} [id V]
| |Subtensor{int64:int64:} [id U] <TensorType(int32, vector)> 'Length of surface_points in every series[0:-1]'
| |ScalarFromTensor [id CW]
| |Elemwise{minimum,no_inplace} [id B] <TensorType(int64, scalar)> ''
|Subtensor{:int64:} [id CX] <TensorType(int32, vector)> ''
| |Subtensor{int64::} [id Y] <TensorType(int32, vector)> 'Length of surface_points in every series[1:]'
| |ScalarFromTensor [id CW]
|Subtensor{:int64:} [id CY] <TensorType(int32, vector)> ''
| |Subtensor{int64:int64:} [id BB] <TensorType(int32, vector)> 'Length of foliations in every series[0:-1]'
| |ScalarFromTensor [id CW]
|Subtensor{:int64:} [id CZ] <TensorType(int32, vector)> ''
| |Subtensor{int64::} [id BE] <TensorType(int32, vector)> 'Length of foliations in every series[1:]'
| |ScalarFromTensor [id CW]
|Subtensor{:int64:} [id DA] <TensorType(int32, vector)> ''
| |Subtensor{int64:int64:} [id BH] <TensorType(int32, vector)> 'Length of weights in every series[0:-1]'
| |ScalarFromTensor [id CW]
|Subtensor{:int64:} [id DB] <TensorType(int32, vector)> ''
| |Subtensor{int64::} [id BK] <TensorType(int32, vector)> 'Length of weights in every series[1:]'
| |ScalarFromTensor [id CW]
|Subtensor{:int64:} [id DC] <TensorType(int32, vector)> ''
| |Subtensor{int64:int64:} [id BN] <TensorType(int32, vector)> 'List with the number of surfaces[0:-1]'
| |ScalarFromTensor [id CW]
|Subtensor{:int64:} [id DD] <TensorType(int32, vector)> ''
| |Subtensor{int64::} [id BQ] <TensorType(int32, vector)> 'List with the number of surfaces[1:]'
| |ScalarFromTensor [id CW]
|Subtensor{:int64:} [id DE] <TensorType(int32, vector)> ''
| |Subtensor{int64::} [id BT] <TensorType(int32, vector)> 'Grade of the universal drift[0:]'
| |ScalarFromTensor [id CW]
|Subtensor{:int64:} [id DF] <TensorType(bool, vector)> ''
| |Subtensor{int64::} [id BW] <TensorType(bool, vector)> 'Vector controlling if weights must be recomputed[0:]'
| |ScalarFromTensor [id CW]
|Subtensor{:int64:} [id DG] <TensorType(bool, vector)> ''
| |Subtensor{int64::} [id BZ] <TensorType(bool, vector)> 'Vector controlling if scalar matrix must be recomputed[0:]'
| |ScalarFromTensor [id CW]
|Subtensor{:int64:} [id DH] <TensorType(bool, vector)> ''
| |Subtensor{int64::} [id CC] <TensorType(bool, vector)> 'Vector controlling if block matrix must be recomputed[0:]'
| |ScalarFromTensor [id CW]
|Subtensor{:int64:} [id DI] <TensorType(int32, vector)> ''
| |Subtensor{int64::} [id CF] <TensorType(int32, vector)> 'The series (fault) is finite[0:]'
| |ScalarFromTensor [id CW]
|Subtensor{:int64:} [id DJ] <TensorType(int32, vector)> ''
| |Subtensor{int64::} [id CI] <TensorType(int32, vector)> ''
| |ScalarFromTensor [id CW]
|Subtensor{:int64:} [id DK] <TensorType(int32, vector)> ''
| |Subtensor{int64::} [id CM] <TensorType(int32, vector)> ''
| |ScalarFromTensor [id CW]
|Subtensor{:int64:} [id DL] <TensorType(int32, vector)> ''
| |TensorConstant{[ 0 1..4998 4999]} [id DM] <TensorType(int32, vector)>
| |ScalarFromTensor [id CW]
|Subtensor{:int64:} [id DN] <TensorType(float64, vector)> ''
| |Subtensor{int64::} [id CR] <TensorType(float64, vector)> 'Range[0:]'
| |ScalarFromTensor [id CW]
|Subtensor{:int64:} [id DO] <TensorType(float64, vector)> ''
| |Subtensor{int64::} [id CU] <TensorType(float64, vector)> 'Covariance at 0[0:]'
| |ScalarFromTensor [id CW]
|IncSubtensor{Set;:int64:} [id DP] <TensorType(float64, 4D)> ''
| |AllocEmpty{dtype='float64'} [id DQ] <TensorType(float64, 4D)> ''
| | |Elemwise{add,no_inplace} [id DR] <TensorType(int64, scalar)> ''
| | | |Elemwise{minimum,no_inplace} [id B] <TensorType(int64, scalar)> ''
| | | |Subtensor{int64} [id DS] <TensorType(int64, scalar)> ''
| | | |Shape [id DT] <TensorType(int64, vector)> ''
| | | | |Rebroadcast{0} [id DU] <TensorType(float64, 4D)> ''
| | | | |InplaceDimShuffle{x,0,1,2} [id DV] <TensorType(float64, (True, False, False, False))> ''
| | | | |block matrix [id DW] <TensorType(float64, 3D)>
| | | |Constant{0} [id V]
| | | |Shape [id DT] <TensorType(int64, vector)> ''
| | | |Constant{1} [id DY]
| | | |Shape [id DT] <TensorType(int64, vector)> ''
| | | |Constant{2} [id EA]
| | |Shape [id DT] <TensorType(int64, vector)> ''
| | |Constant{3} [id EC]
| |ScalarFromTensor [id ED]
| |Subtensor{int64} [id DS] <TensorType(int64, scalar)> ''
|IncSubtensor{Set;:int64:} [id EE] <TensorType(float64, matrix)> ''
| |AllocEmpty{dtype='float64'} [id EF] <TensorType(float64, matrix)> ''
| | |Elemwise{add,no_inplace} [id EG] <TensorType(int64, scalar)> ''
| | | |Elemwise{minimum,no_inplace} [id B] <TensorType(int64, scalar)> ''
| | | |Subtensor{int64} [id EH] <TensorType(int64, scalar)> ''
| | | |Shape [id EI] <TensorType(int64, vector)> ''
| | | | |Rebroadcast{0} [id EJ] <TensorType(float64, matrix)> ''
| | | | |InplaceDimShuffle{x,0} [id EK] <TensorType(float64, row)> ''
| | | | |Weights vector [id EL] <TensorType(float64, vector)>
| | | |Constant{0} [id V]
| | |Shape [id EI] <TensorType(int64, vector)> ''
| | |Constant{1} [id DY]
| |ScalarFromTensor [id EN]
| |Subtensor{int64} [id EH] <TensorType(int64, scalar)> ''
|IncSubtensor{Set;:int64:} [id EO] <TensorType(float64, 3D)> ''
| |AllocEmpty{dtype='float64'} [id EP] <TensorType(float64, 3D)> ''
| | |Elemwise{add,no_inplace} [id EQ] <TensorType(int64, scalar)> ''
| | | |Elemwise{minimum,no_inplace} [id B] <TensorType(int64, scalar)> ''
| | | |Subtensor{int64} [id ER] <TensorType(int64, scalar)> ''
| | | |Shape [id ES] <TensorType(int64, vector)> ''
| | | | |Rebroadcast{0} [id ET] <TensorType(float64, 3D)> ''
| | | | |InplaceDimShuffle{x,0,1} [id EU] <TensorType(float64, (True, False, False))> ''
| | | | |Scalar matrix [id EV] <TensorType(float64, matrix)>
| | | |Constant{0} [id V]
| | | |Shape [id ES] <TensorType(int64, vector)> ''
| | | |Constant{1} [id DY]
| | |Shape [id ES] <TensorType(int64, vector)> ''
| | |Constant{2} [id EA]
| |ScalarFromTensor [id EY]
| |Subtensor{int64} [id ER] <TensorType(int64, scalar)> ''
|IncSubtensor{Set;:int64:} [id EZ] <TensorType(float64, 3D)> ''
| |AllocEmpty{dtype='float64'} [id FA] <TensorType(float64, 3D)> ''
| | |Elemwise{add,no_inplace} [id FB] <TensorType(int64, scalar)> ''
| | | |Elemwise{minimum,no_inplace} [id B] <TensorType(int64, scalar)> ''
| | | |Subtensor{int64} [id FC] <TensorType(int64, scalar)> ''
| | | |Shape [id FD] <TensorType(int64, vector)> ''
| | | | |Rebroadcast{0} [id FE] <TensorType(float64, 3D)> ''
| | | | |InplaceDimShuffle{x,0,1} [id FF] <TensorType(float64, (True, False, False))> ''
| | | | |Alloc [id FG] <TensorType(float64, matrix)> ''
| | | | |TensorConstant{0.0} [id FH] <TensorType(float64, scalar)>
| | | | |Subtensor{int64} [id FI] <TensorType(int64, scalar)> ''
| | | | | |Shape [id FJ] <TensorType(int64, vector)> ''
| | | | | | |<TensorType(int32, vector)> [id CJ] <TensorType(int32, vector)>
| | | | | |Constant{0} [id V]
| | | | |List with the number of surfaces [id FL] <TensorType(int32, vector)>
| | | | |Constant{-1} [id FM]
| | | |Shape [id FD] <TensorType(int64, vector)> ''
| | | |Constant{1} [id DY]
| | |Shape [id FD] <TensorType(int64, vector)> ''
| | |Constant{2} [id EA]
| |ScalarFromTensor [id FP]
| |Subtensor{int64} [id FC] <TensorType(int64, scalar)> ''
|IncSubtensor{Set;:int64:} [id FQ] <TensorType(bool, 3D)> ''
| |AllocEmpty{dtype='bool'} [id FR] <TensorType(bool, 3D)> ''
| | |Elemwise{add,no_inplace} [id FS] <TensorType(int64, scalar)> ''
| | | |Elemwise{minimum,no_inplace} [id B] <TensorType(int64, scalar)> ''
| | | |Subtensor{int64} [id FT] <TensorType(int64, scalar)> ''
| | | |Shape [id FU] <TensorType(int64, vector)> ''
| | | | |Rebroadcast{0} [id FV] <TensorType(bool, 3D)> ''
| | | | |InplaceDimShuffle{x,0,1} [id FW] <TensorType(bool, (True, False, False))> ''
| | | | |mask matrix [id FX] <TensorType(bool, matrix)>
| | | |Constant{0} [id V]
| | | |Shape [id FU] <TensorType(int64, vector)> ''
| | | |Constant{1} [id DY]
| | |Shape [id FU] <TensorType(int64, vector)> ''
| | |Constant{2} [id EA]
| |ScalarFromTensor [id GA]
| |Subtensor{int64} [id FT] <TensorType(int64, scalar)> ''
|IncSubtensor{Set;:int64:} [id GB] <TensorType(bool, 3D)> ''
| |AllocEmpty{dtype='bool'} [id GC] <TensorType(bool, 3D)> ''
| | |Elemwise{add,no_inplace} [id GD] <TensorType(int64, scalar)> ''
| | | |Elemwise{minimum,no_inplace} [id B] <TensorType(int64, scalar)> ''
| | | |Subtensor{int64} [id GE] <TensorType(int64, scalar)> ''
| | | |Shape [id GF] <TensorType(int64, vector)> ''
| | | | |Rebroadcast{0} [id GG] <TensorType(bool, 3D)> ''
| | | | |InplaceDimShuffle{x,0,1} [id GH] <TensorType(bool, (True, False, False))> ''
| | | | |Elemwise{second,no_inplace} [id GI] <TensorType(bool, matrix)> ''
| | | | |mask matrix [id FX] <TensorType(bool, matrix)>
| | | | |TensorConstant{(1, 1) of False} [id GJ] <TensorType(bool, (True, True))>
| | | |Constant{0} [id V]
| | | |Shape [id GF] <TensorType(int64, vector)> ''
| | | |Constant{1} [id DY]
| | |Shape [id GF] <TensorType(int64, vector)> ''
| | |Constant{2} [id EA]
| |ScalarFromTensor [id GM]
| |Subtensor{int64} [id GE] <TensorType(int64, scalar)> ''
|IncSubtensor{Set;:int64:} [id GN] <TensorType(float64, 4D)> ''
| |AllocEmpty{dtype='float64'} [id GO] <TensorType(float64, 4D)> ''
| | |Elemwise{add,no_inplace} [id GP] <TensorType(int64, scalar)> ''
| | | |Elemwise{minimum,no_inplace} [id B] <TensorType(int64, scalar)> ''
| | | |Subtensor{int64} [id GQ] <TensorType(int64, scalar)> ''
| | | |Shape [id GR] <TensorType(int64, vector)> ''
| | | | |Rebroadcast{0} [id GS] <TensorType(float64, 4D)> ''
| | | | |InplaceDimShuffle{x,0,1,2} [id GT] <TensorType(float64, (True, False, False, False))> ''
| | | | |Elemwise{second,no_inplace} [id GU] <TensorType(float64, 3D)> ''
| | | | |block matrix [id DW] <TensorType(float64, 3D)>
| | | | |TensorConstant{(1, 1, 1) of 0.0} [id GV] <TensorType(float64, (True, True, True))>
| | | |Constant{0} [id V]
| | | |Shape [id GR] <TensorType(int64, vector)> ''
| | | |Constant{1} [id DY]
| | | |Shape [id GR] <TensorType(int64, vector)> ''
| | | |Constant{2} [id EA]
| | |Shape [id GR] <TensorType(int64, vector)> ''
| | |Constant{3} [id EC]
| |ScalarFromTensor [id GZ]
| |Subtensor{int64} [id GQ] <TensorType(int64, scalar)> ''
|IncSubtensor{Set;:int64:} [id HA] <TensorType(int64, vector)> ''
| |AllocEmpty{dtype='int64'} [id HB] <TensorType(int64, vector)> ''
| | |Elemwise{add,no_inplace} [id HC] <TensorType(int64, scalar)> ''
| | |Elemwise{minimum,no_inplace} [id B] <TensorType(int64, scalar)> ''
| | |TensorConstant{1} [id HD] <TensorType(int64, scalar)>
| |TensorConstant{(1,) of 0} [id HE] <TensorType(int64, vector)>
| |Constant{1} [id DY]
for{cpu,Looping}.2 [id A] <TensorType(float64, 3D)> ''
for{cpu,Looping}.3 [id A] <TensorType(float64, 3D)> ''
for{cpu,Looping}.4 [id A] <TensorType(bool, 3D)> ''
for{cpu,Looping}.5 [id A] <TensorType(bool, 3D)> ''
for{cpu,Looping}.6 [id A] <TensorType(float64, 4D)> ''
for{cpu,Looping}.7 [id A] <TensorType(int64, vector)> ''
Inner graphs of the scan ops: ……`
Dear @Linya-Peng
this is a theano-error, and it can have different sources. So it is a bit difficult to pinpoint it to a specific error in data processing, or the input data itself. It would be easiest, if you could share your processing notebook and some of your example data.
Dear @Japhiolite
Thank you for your reply!
Here are my notebook and example data.
Where:
LOCAtest.csv contains the position information of each borehole (wellname, coordinate)
GEOLtest.scv contains the stratigraphic information each borehole
At the very begining, I tried to use 3 boreholes to test, and got the result below:
So I guess the more complex borehole data and formation topology caused this error?
example_data_and_notebook.zip
Hi @Linya-Peng
I had a look at your data. The processing and reading looks fine. I think you are right with your guess, that the more complex model breaks the calculation of the solution. Thing is, you only provide 1 orientation value for the whole stack, and it is the default orientation (i.e. 0° dip with azimuth of 0°). This may work for small data sets like you've seen, although the model there also looks kinda funky.
You need more orientation data points for making the more complicated model work.
Hi @Japhiolite Thank you for your reply! I'll try to set more precise orientation, maybe use gp.set_orientation_from_neighbours_all? And if i have any new progress,I‘ll let you know~ Thank you again for your patience!
Hi @Linya-Peng yes, setting orientations from neighbours may work...it may also not, depending on the distance and number of neighbours. Setting good orientation values is one more difficult, but important step in creating a consistent model. Thanks for keeping me updated, when/if this works. Best regards
@Linya-Peng any updates here?