Note
Go to the end to download the full example code.
2D Posterior analysis of Skytem inference
All plotting in GeoBIPy can be carried out using the 3D inference class
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
Model:
mesh:
| RectilinearMesh2D:
| Shape: : (79, 132)
| x
| RectilinearMesh1D
| Number of Cells:
| | 79
| Cell Centres:
| | StatArray
| | Name: Easting (m)
| | Address:['0x17f00d0d0']
| | Shape: (79,)
| | Values: [ 0. 1. 2. ... 76. 77. 78.]
| | Min: 0.0
| | Max: 78.0
| | has_posterior: False
|
| Cell Edges:
| | StatArray
| | Name: Easting (m)
| | Address:['0x17f00ebd0']
| | Shape: (80,)
| | Values: [-0.5 0.5 1.5 ... 76.5 77.5 78.5]
| | Min: -0.5
| | Max: 78.5
| | has_posterior: False
|
| log:
| | None
| relative_to:
| | StatArray
| | Name:
| | Address:['0x182cba8d0']
| | Shape: (1,)
| | Values: [0.]
| | Min: 0.0
| | Max: 0.0
| | has_posterior: False
|
| y
| RectilinearMesh1D
| Number of Cells:
| | 132
| Cell Centres:
| | StatArray
| | Name: elevation (m)
| | Address:['0x17f00fa50']
| | Shape: (132,)
| | Values: [ -3.1875 -7.7625 -12.3375 ... -593.3625 -597.9375 -602.5125]
| | Min: -602.5125
| | Max: -3.1875
| | has_posterior: False
|
| Cell Edges:
| | StatArray
| | Name: elevation (m)
| | Address:['0x17f00e9d0']
| | Shape: (133,)
| | Values: [ -0.9 -5.475 -10.05 ... -595.65 -600.225 -604.8 ]
| | Min: -604.8
| | Max: -0.9
| | has_posterior: False
|
| log:
| | None
| relative_to:
| | StatArray
| | Name: Elevation (m)
| | Address:['0x17ec00950']
| | Shape: (79,)
| | Values: [0. 0. 0. ... 0. 0. 0.]
| | Min: 0.0
| | Max: 0.0
| | has_posterior: False
|
values:
| StatArray
| Name: Mean Conductivity ($\frac{S}{m}$)
| Address:['0x17f00d650']
| Shape: (79, 132)
| Values: [[0.01120778 0.01120778 0.01089737 ... 0.01842322 0.01842322 0.01842322]
| [0.01004315 0.01004315 0.01001518 ... 0.01627435 0.01627435 0.01627435]
| [0.0098209 0.0098209 0.00983342 ... 0.01667789 0.01667789 0.01667789]
| ...
| [0.06755182 0.06755182 0.11932536 ... 0.0915802 0.0915802 0.0915802 ]
| [0.08104576 0.08104576 0.09688295 ... 0.09217019 0.09217019 0.09217019]
| [0.09121028 0.09121028 0.09943253 ... 0.11213815 0.11213815 0.11213815]]
| Min: 0.007485002271267226
| Max: 0.21717666705189165
| has_posterior: False
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
Model:
mesh:
| RectilinearMesh2D:
| Shape: : (79, 132)
| x
| RectilinearMesh1D
| Number of Cells:
| | 79
| Cell Centres:
| | StatArray
| | Name: Easting (m)
| | Address:['0x182cb9c50']
| | Shape: (79,)
| | Values: [ 0. 1. 2. ... 76. 77. 78.]
| | Min: 0.0
| | Max: 78.0
| | has_posterior: False
|
| Cell Edges:
| | StatArray
| | Name: Easting (m)
| | Address:['0x17f114d50']
| | Shape: (80,)
| | Values: [-0.5 0.5 1.5 ... 76.5 77.5 78.5]
| | Min: -0.5
| | Max: 78.5
| | has_posterior: False
|
| log:
| | None
| relative_to:
| | StatArray
| | Name:
| | Address:['0x182c2d4d0']
| | Shape: (1,)
| | Values: [0.]
| | Min: 0.0
| | Max: 0.0
| | has_posterior: False
|
| y
| RectilinearMesh1D
| Number of Cells:
| | 132
| Cell Centres:
| | StatArray
| | Name: elevation (m)
| | Address:['0x17f115b50']
| | Shape: (132,)
| | Values: [ -3.1875 -7.7625 -12.3375 ... -593.3625 -597.9375 -602.5125]
| | Min: -602.5125
| | Max: -3.1875
| | has_posterior: False
|
| Cell Edges:
| | StatArray
| | Name: elevation (m)
| | Address:['0x17ec01c50']
| | Shape: (133,)
| | Values: [ -0.9 -5.475 -10.05 ... -595.65 -600.225 -604.8 ]
| | Min: -604.8
| | Max: -0.9
| | has_posterior: False
|
| log:
| | None
| relative_to:
| | StatArray
| | Name: Elevation (m)
| | Address:['0x17ec036d0']
| | Shape: (79,)
| | Values: [0. 0. 0. ... 0. 0. 0.]
| | Min: 0.0
| | Max: 0.0
| | has_posterior: False
|
values:
| StatArray
| Name: Mean Conductivity ($\frac{S}{m}$)
| Address:['0x17ec006d0']
| Shape: (79, 132)
| Values: [[0.01022279 0.01022279 0.01016321 ... 0.0112021 0.0112021 0.0112021 ]
| [0.01121804 0.01121804 0.01062572 ... 0.0110357 0.0110357 0.0110357 ]
| [0.01049917 0.01049917 0.01007536 ... 0.01354095 0.01354095 0.01354095]
| ...
| [0.06896877 0.06896877 0.082946 ... 0.07112381 0.07112381 0.07112381]
| [0.08055856 0.08055856 0.0985627 ... 0.07903887 0.07903887 0.07903887]
| [0.09166633 0.09166633 0.09878492 ... 0.11154601 0.11154601 0.11154601]]
| Min: 0.006775009348709323
| Max: 0.8077378262817626
| has_posterior: False
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
Model:
mesh:
| RectilinearMesh2D:
| Shape: : (79, 132)
| x
| RectilinearMesh1D
| Number of Cells:
| | 79
| Cell Centres:
| | StatArray
| | Name: Easting (m)
| | Address:['0x18229f350']
| | Shape: (79,)
| | Values: [ 0. 1. 2. ... 76. 77. 78.]
| | Min: 0.0
| | Max: 78.0
| | has_posterior: False
|
| Cell Edges:
| | StatArray
| | Name: Easting (m)
| | Address:['0x17f21de50']
| | Shape: (80,)
| | Values: [-0.5 0.5 1.5 ... 76.5 77.5 78.5]
| | Min: -0.5
| | Max: 78.5
| | has_posterior: False
|
| log:
| | None
| relative_to:
| | StatArray
| | Name:
| | Address:['0x182600c50']
| | Shape: (1,)
| | Values: [0.]
| | Min: 0.0
| | Max: 0.0
| | has_posterior: False
|
| y
| RectilinearMesh1D
| Number of Cells:
| | 132
| Cell Centres:
| | StatArray
| | Name: elevation (m)
| | Address:['0x18229d5d0']
| | Shape: (132,)
| | Values: [ -3.1875 -7.7625 -12.3375 ... -593.3625 -597.9375 -602.5125]
| | Min: -602.5125
| | Max: -3.1875
| | has_posterior: False
|
| Cell Edges:
| | StatArray
| | Name: elevation (m)
| | Address:['0x18229dbd0']
| | Shape: (133,)
| | Values: [ -0.9 -5.475 -10.05 ... -595.65 -600.225 -604.8 ]
| | Min: -604.8
| | Max: -0.9
| | has_posterior: False
|
| log:
| | None
| relative_to:
| | StatArray
| | Name: Elevation (m)
| | Address:['0x18229e6d0']
| | Shape: (79,)
| | Values: [0. 0. 0. ... 0. 0. 0.]
| | Min: 0.0
| | Max: 0.0
| | has_posterior: False
|
values:
| StatArray
| Name: Mean Conductivity ($\frac{S}{m}$)
| Address:['0x18229cb50']
| Shape: (79, 132)
| Values: [[0.02104953 0.02104953 0.02099504 ... 0.01952426 0.01952426 0.01952426]
| [0.02008789 0.02008789 0.01997577 ... 0.02017019 0.02017019 0.02017019]
| [0.0198301 0.0198301 0.01986773 ... 0.0145253 0.0145253 0.0145253 ]
| ...
| [0.00511314 0.00511314 0.0029654 ... 0.01258484 0.01258484 0.01258484]
| [0.00392961 0.00392961 0.00385047 ... 0.00870505 0.00870505 0.00870505]
| [0.00279718 0.00279718 0.00269725 ... 0.00924302 0.00924302 0.00924302]]
| Min: 0.0008600086897131668
| Max: 9.774547726888374
| has_posterior: False
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
Model:
mesh:
| RectilinearMesh2D:
| Shape: : (79, 132)
| x
| RectilinearMesh1D
| Number of Cells:
| | 79
| Cell Centres:
| | StatArray
| | Name: Easting (m)
| | Address:['0x17eab3d50']
| | Shape: (79,)
| | Values: [ 0. 1. 2. ... 76. 77. 78.]
| | Min: 0.0
| | Max: 78.0
| | has_posterior: False
|
| Cell Edges:
| | StatArray
| | Name: Easting (m)
| | Address:['0x17eab07d0']
| | Shape: (80,)
| | Values: [-0.5 0.5 1.5 ... 76.5 77.5 78.5]
| | Min: -0.5
| | Max: 78.5
| | has_posterior: False
|
| log:
| | None
| relative_to:
| | StatArray
| | Name:
| | Address:['0x17f2d60d0']
| | Shape: (1,)
| | Values: [0.]
| | Min: 0.0
| | Max: 0.0
| | has_posterior: False
|
| y
| RectilinearMesh1D
| Number of Cells:
| | 132
| Cell Centres:
| | StatArray
| | Name: elevation (m)
| | Address:['0x17eab31d0']
| | Shape: (132,)
| | Values: [ -3.1875 -7.7625 -12.3375 ... -593.3625 -597.9375 -602.5125]
| | Min: -602.5125
| | Max: -3.1875
| | has_posterior: False
|
| Cell Edges:
| | StatArray
| | Name: elevation (m)
| | Address:['0x17eab0bd0']
| | Shape: (133,)
| | Values: [ -0.9 -5.475 -10.05 ... -595.65 -600.225 -604.8 ]
| | Min: -604.8
| | Max: -0.9
| | has_posterior: False
|
| log:
| | None
| relative_to:
| | StatArray
| | Name: Elevation (m)
| | Address:['0x182fd6bd0']
| | Shape: (79,)
| | Values: [0. 0. 0. ... 0. 0. 0.]
| | Min: 0.0
| | Max: 0.0
| | has_posterior: False
|
values:
| StatArray
| Name: Mean Conductivity ($\frac{S}{m}$)
| Address:['0x182fd5650']
| Shape: (79, 132)
| Values: [[0.01147797 0.01147797 0.01033699 ... 0.00131732 0.00131732 0.00131732]
| [0.00999299 0.00999299 0.01000167 ... 0.00120333 0.00120333 0.00120333]
| [0.01007022 0.01007022 0.01005285 ... 0.00844038 0.00844038 0.00844038]
| ...
| [0.06763163 0.06763163 0.11942951 ... 0.09924038 0.09924038 0.09924038]
| [0.08122468 0.08122468 0.09651811 ... 0.09608009 0.09608009 0.09608009]
| [0.09162505 0.09162505 0.09883382 ... 0.11272764 0.11272764 0.11272764]]
| Min: 0.0007661982574834428
| Max: 0.21045876958147633
| has_posterior: False
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
Model:
mesh:
| RectilinearMesh2D:
| Shape: : (79, 132)
| x
| RectilinearMesh1D
| Number of Cells:
| | 79
| Cell Centres:
| | StatArray
| | Name: Easting (m)
| | Address:['0x181fa95d0']
| | Shape: (79,)
| | Values: [ 0. 1. 2. ... 76. 77. 78.]
| | Min: 0.0
| | Max: 78.0
| | has_posterior: False
|
| Cell Edges:
| | StatArray
| | Name: Easting (m)
| | Address:['0x181fa88d0']
| | Shape: (80,)
| | Values: [-0.5 0.5 1.5 ... 76.5 77.5 78.5]
| | Min: -0.5
| | Max: 78.5
| | has_posterior: False
|
| log:
| | None
| relative_to:
| | StatArray
| | Name:
| | Address:['0x181f49a50']
| | Shape: (1,)
| | Values: [0.]
| | Min: 0.0
| | Max: 0.0
| | has_posterior: False
|
| y
| RectilinearMesh1D
| Number of Cells:
| | 132
| Cell Centres:
| | StatArray
| | Name: elevation (m)
| | Address:['0x181fa8450']
| | Shape: (132,)
| | Values: [ -3.1875 -7.7625 -12.3375 ... -593.3625 -597.9375 -602.5125]
| | Min: -602.5125
| | Max: -3.1875
| | has_posterior: False
|
| Cell Edges:
| | StatArray
| | Name: elevation (m)
| | Address:['0x181fa8150']
| | Shape: (133,)
| | Values: [ -0.9 -5.475 -10.05 ... -595.65 -600.225 -604.8 ]
| | Min: -604.8
| | Max: -0.9
| | has_posterior: False
|
| log:
| | None
| relative_to:
| | StatArray
| | Name: Elevation (m)
| | Address:['0x181fa9150']
| | Shape: (79,)
| | Values: [0. 0. 0. ... 0. 0. 0.]
| | Min: 0.0
| | Max: 0.0
| | has_posterior: False
|
values:
| StatArray
| Name: Mean Conductivity ($\frac{S}{m}$)
| Address:['0x181fa87d0']
| Shape: (79, 132)
| Values: [[1.02310541 1.02310541 1.02438661 ... 1.05490484 1.05490484 1.05490484]
| [1.02229478 1.02229478 1.02483553 ... 0.83077926 0.83077926 0.83077926]
| [1.02256309 1.02256309 1.02298923 ... 1.16206135 1.16206135 1.16206135]
| ...
| [0.18317234 0.18317234 0.18317234 ... 0.04611609 0.04611609 0.04611609]
| [0.13296225 0.13296225 0.13296225 ... 0.02326468 0.02326468 0.02326468]
| [0.08897776 0.08897776 0.08897776 ... 0.02807133 0.02807133 0.02807133]]
| Min: 0.005922638381206899
| Max: 15.778868401978407
| has_posterior: False
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
Model:
mesh:
| RectilinearMesh2D:
| Shape: : (79, 132)
| x
| RectilinearMesh1D
| Number of Cells:
| | 79
| Cell Centres:
| | StatArray
| | Name: Easting (m)
| | Address:['0x180d2a5d0']
| | Shape: (79,)
| | Values: [ 0. 1. 2. ... 76. 77. 78.]
| | Min: 0.0
| | Max: 78.0
| | has_posterior: False
|
| Cell Edges:
| | StatArray
| | Name: Easting (m)
| | Address:['0x180d2aad0']
| | Shape: (80,)
| | Values: [-0.5 0.5 1.5 ... 76.5 77.5 78.5]
| | Min: -0.5
| | Max: 78.5
| | has_posterior: False
|
| log:
| | None
| relative_to:
| | StatArray
| | Name:
| | Address:['0x17f866cd0']
| | Shape: (1,)
| | Values: [0.]
| | Min: 0.0
| | Max: 0.0
| | has_posterior: False
|
| y
| RectilinearMesh1D
| Number of Cells:
| | 132
| Cell Centres:
| | StatArray
| | Name: elevation (m)
| | Address:['0x180d2a750']
| | Shape: (132,)
| | Values: [ -3.1875 -7.7625 -12.3375 ... -593.3625 -597.9375 -602.5125]
| | Min: -602.5125
| | Max: -3.1875
| | has_posterior: False
|
| Cell Edges:
| | StatArray
| | Name: elevation (m)
| | Address:['0x180d2ac50']
| | Shape: (133,)
| | Values: [ -0.9 -5.475 -10.05 ... -595.65 -600.225 -604.8 ]
| | Min: -604.8
| | Max: -0.9
| | has_posterior: False
|
| log:
| | None
| relative_to:
| | StatArray
| | Name: Elevation (m)
| | Address:['0x180d216d0']
| | Shape: (79,)
| | Values: [0. 0. 0. ... 0. 0. 0.]
| | Min: 0.0
| | Max: 0.0
| | has_posterior: False
|
values:
| StatArray
| Name: Mean Conductivity ($\frac{S}{m}$)
| Address:['0x180d21350']
| Shape: (79, 132)
| Values: [[0.00056777 0.00056777 0.00056795 ... 0.00059446 0.00059446 0.00059446]
| [0.00052266 0.00052266 0.00052266 ... 0.00071041 0.00071041 0.00071041]
| [0.00080071 0.00080071 0.00080071 ... 0.00104502 0.00104502 0.00104502]
| ...
| [0.00854703 0.00854703 0.00857136 ... 0.00167267 0.00167267 0.00167267]
| [0.00894549 0.00894549 0.00908742 ... 0.00255047 0.00255047 0.00255047]
| [0.00925526 0.00925526 0.00948505 ... 0.00507188 0.00507188 0.00507188]]
| Min: 0.0004901610032814771
| Max: 0.7309893437585234
| has_posterior: False
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
self.n_components=1, self.nTimes=array([26, 19])
import argparse
import matplotlib.pyplot as plt
import numpy as np
from geobipy import Model
from geobipy import Inference2D
def plot_2d_summary(folder, data_type, model_type):
#%%
# Inference for a line of inferences
# ++++++++++++++++++++++++++++++++++
#
# We can instantiate the inference handler by providing a path to the directory containing
# HDF5 files generated by GeoBIPy.
#
# The InfereceXD classes are low memory. They only read information from the HDF5 files
# as and when it is needed.
#
# The first time you use these classes to create plots, expect longer initial processing times.
# I precompute expensive properties and store them in the HDF5 files for later use.
from numpy.random import Generator
from numpy.random import PCG64DXSM
generator = PCG64DXSM(seed=0)
prng = Generator(generator)
#%%
results_2d = Inference2D.fromHdf('{}/{}/{}/0.0.h5'.format(folder, data_type, model_type), prng=prng)
kwargs = {
"log" : 10,
"cmap" : 'jet'
}
fig = plt.figure(figsize=(16, 8))
plt.suptitle("{} {}".format(data_type, model_type))
gs0 = fig.add_gridspec(6, 2, hspace=1.0)
true_model = Model.create_synthetic_model(model_type)
kwargs['vmin'] = np.log10(np.min(true_model.values))
kwargs['vmax'] = np.log10(np.max(true_model.values))
ax = fig.add_subplot(gs0[0, 0])
true_model.pcolor(flipY=True, ax=ax, wrap_clabel=True, **kwargs)
results_2d.plot_data_elevation(linewidth=0.3, ax=ax, xlabel=False, ylabel=False);
results_2d.plot_elevation(linewidth=0.3, ax=ax, xlabel=False, ylabel=False);
plt.ylim([-550, 60])
print(results_2d.mean_parameters().summary)
ax1 = fig.add_subplot(gs0[0, 1], sharex=ax, sharey=ax)
results_2d.plot_mean_model(ax=ax1, wrap_clabel=True, **kwargs);
results_2d.plot_data_elevation(linewidth=0.3, ax=ax1);
results_2d.plot_elevation(linewidth=0.3, ax=ax1);
# By adding the useVariance keyword, we can make regions of lower confidence more transparent
ax1 = fig.add_subplot(gs0[1, 1], sharex=ax, sharey=ax)
results_2d.plot_mode_model(ax=ax1, wrap_clabel=True, **kwargs);
results_2d.plot_data_elevation(linewidth=0.3, ax=ax1);
results_2d.plot_elevation(linewidth=0.3, ax=ax1);
# # # # # We can also choose to keep parameters above the DOI opaque.
# # # # results_2d.compute_doi()
# # # # plt.subplot(313)
# # # # results_2d.plot_mean_model(use_variance=True, mask_below_doi=True, **kwargs);
# # # # results_2d.plot_data_elevation(linewidth=0.3);
# # # # results_2d.plot_elevation(linewidth=0.3);
ax1 = fig.add_subplot(gs0[2, 1], sharex=ax, sharey=ax)
results_2d.plot_best_model(ax=ax1, wrap_clabel=True, **kwargs);
results_2d.plot_data_elevation(linewidth=0.3, ax=ax1);
results_2d.plot_elevation(linewidth=0.3, ax=ax1);
ax1.set_title('Best model')
del kwargs['vmin']
del kwargs['vmax']
ax1 = fig.add_subplot(gs0[3, 1], sharex=ax, sharey=ax); ax1.set_title('5%')
results_2d.plot_percentile(ax=ax1, percent=0.05, wrap_clabel=True, **kwargs)
results_2d.plot_data_elevation(linewidth=0.3, ax=ax1);
results_2d.plot_elevation(linewidth=0.3, ax=ax1);
ax1 = fig.add_subplot(gs0[4, 1], sharex=ax, sharey=ax); ax1.set_title('50%')
results_2d.plot_percentile(ax=ax1, percent=0.5, wrap_clabel=True, **kwargs)
results_2d.plot_data_elevation(linewidth=0.3, ax=ax1);
results_2d.plot_elevation(linewidth=0.3, ax=ax1);
ax1 = fig.add_subplot(gs0[5, 1], sharex=ax, sharey=ax); ax1.set_title('95%')
results_2d.plot_percentile(ax=ax1, percent=0.95, wrap_clabel=True, **kwargs)
results_2d.plot_data_elevation(linewidth=0.3, ax=ax1);
results_2d.plot_elevation(linewidth=0.3, ax=ax1);
#%%
# We can plot the parameter values that produced the highest posterior
ax1 = fig.add_subplot(gs0[2, 0], sharex=ax)
results_2d.plot_k_layers(ax=ax1, wrap_ylabel=True)
ax1 = fig.add_subplot(gs0[1, 0], sharex=ax)
ll, bb, ww, hh = ax1.get_position().bounds
ax1.set_position([ll, bb, ww*0.8, hh])
results_2d.plot_channel_saturation(ax=ax1, wrap_ylabel=True)
results_2d.plot_burned_in(ax=ax1, underlay=True)
#%%
# Now we can start plotting some more interesting posterior properties.
# How about the confidence?
ax1 = fig.add_subplot(gs0[3, 0], sharex=ax, sharey=ax)
results_2d.plot_confidence(ax=ax1);
results_2d.plot_data_elevation(ax=ax1, linewidth=0.3);
results_2d.plot_elevation(ax=ax1, linewidth=0.3);
#%%
# We can take the interface depth posterior for each data point,
# and display an interface probability cross section
# This posterior can be washed out, so the clim_scaling keyword lets me saturate
# the top and bottom 0.5% of the colour range
ax1 = fig.add_subplot(gs0[4, 0], sharex=ax, sharey=ax)
ax1.set_title('P(Interface)')
results_2d.plot_interfaces(cmap='Greys', clim_scaling=0.5, ax=ax1);
results_2d.plot_data_elevation(linewidth=0.3, ax=ax1);
results_2d.plot_elevation(linewidth=0.3, ax=ax1);
ax1 = fig.add_subplot(gs0[5, 0], sharex=ax, sharey=ax)
results_2d.plot_entropy(cmap='Greys', clim_scaling=0.5, ax=ax1);
results_2d.plot_data_elevation(linewidth=0.3, ax=ax1);
results_2d.plot_elevation(linewidth=0.3, ax=ax1);
# plt.show()
plt.savefig('{}_{}.png'.format(data_type, model_type), dpi=300)
if __name__ == '__main__':
types = ['glacial', 'saline_clay', 'resistive_dolomites', 'resistive_basement', 'coastal_salt_water', 'ice_over_salt_water']
for model in types:
# try:
plot_2d_summary('../../../Parallel_Inference/', "skytem", model)
# except Exception as e:
# print(model)
# print(e)
# pass
Total running time of the script: (0 minutes 18.965 seconds)