fname = "/home/matt/Downloads/salt.pck"
with open(fname, 'r') as f:
data = f.read()
print(data[:300])
dTect V6.4 PickSet Group ons. 18 sep 2019, 14:00:16 ! Z-Unit: Seconds ! 616522.7177599 6081983.02383028 1.78091901 24.99897766 1.57079637 0.02792416 616612.8505724 6081985.54336153 1.74458008 24.99897766 1.57079637 0.02792416 616951.00779896 6081994.99355684 1.67791951 24.99897766 1.57079637 0.02792
This seems to be:
import numpy as np
def read_odt_pts(fname):
data = np.loadtxt(fname, skiprows=6, comments='!', usecols=[0,1,2])
return data
# Example
d = read_odt_pts(fname)
d
array([[6.16522718e+05, 6.08198302e+06, 1.78091901e+00], [6.16612851e+05, 6.08198554e+06, 1.74458008e+00], [6.16951008e+05, 6.08199499e+06, 1.67791951e+00], [6.16984838e+05, 6.08199594e+06, 1.63165966e+00], [6.17176587e+05, 6.08200130e+06, 1.60028747e+00], [6.17503880e+05, 6.08201045e+06, 1.59560456e+00], [6.17955709e+05, 6.08202307e+06, 1.62453077e+00], [6.18294879e+05, 6.08203255e+06, 1.65339516e+00], [6.18622987e+05, 6.08204172e+06, 1.68029861e+00], [6.19132597e+05, 6.08205596e+06, 1.70935266e+00], [6.19291260e+05, 6.08206040e+06, 1.68776755e+00], [6.19665473e+05, 6.08207086e+06, 1.67030214e+00], [6.19778931e+05, 6.08207403e+06, 1.66545579e+00], [6.16691731e+05, 6.08198775e+06, 1.78107929e+00]])
from io import StringIO
def read_petrel_points(filename):
"""
Read a Petrel points file. Return an array.
TODO:
Do something with Comments and Fields.
"""
with open(filename) as f:
comments = []
fields = []
in_header = False
while True:
line = f.readline().strip()
if line.startswith('#'):
comments.append(line.strip('# '))
elif line.startswith('VERSION'):
# version = line.split()[-1]
pass
elif line.startswith('BEGIN'):
in_header = True
elif line.startswith('END'):
in_header = False
break
elif in_header:
fields.append(line.strip())
else:
break
d = f.read()
s = StringIO(d)
return np.loadtxt(s)
d = read_petrel_points('/home/matt/Downloads/fault.pts')
d
array([[ 6.08930490e+05, 6.07364300e+06, -1.55876000e+03], [ 6.08930490e+05, 6.07364300e+06, -1.57642000e+03], [ 6.08953350e+05, 6.07364364e+06, -1.59858000e+03], [ 6.08976210e+05, 6.07364428e+06, -1.61895000e+03], [ 6.08986970e+05, 6.07364458e+06, -1.64194000e+03], [ 6.09009830e+05, 6.07364522e+06, -1.65866000e+03], [ 6.09044790e+05, 6.07364619e+06, -1.67726000e+03], [ 6.09067650e+05, 6.07364683e+06, -1.69931000e+03], [ 6.09067650e+05, 6.07364683e+06, -1.71885000e+03], [ 6.09101270e+05, 6.07364777e+06, -1.74529000e+03], [ 6.09124130e+05, 6.07364841e+06, -1.77277000e+03], [ 6.09146980e+05, 6.07364905e+06, -1.80192000e+03], [ 6.09169840e+05, 6.07364969e+06, -1.82846000e+03], [ 6.09180600e+05, 6.07364999e+06, -1.84790000e+03], [ 6.10272480e+05, 6.07368050e+06, -1.53849000e+03], [ 6.10341060e+05, 6.07368242e+06, -1.55970000e+03], [ 6.10341060e+05, 6.07368242e+06, -1.58447000e+03], [ 6.10374670e+05, 6.07368336e+06, -1.61540000e+03], [ 6.10341060e+05, 6.07368242e+06, -1.64539000e+03], [ 6.10295340e+05, 6.07368114e+06, -1.67548000e+03], [ 6.10295340e+05, 6.07368114e+06, -1.70735000e+03], [ 6.10511830e+05, 6.07368719e+06, -1.49774000e+03], [ 6.10511830e+05, 6.07368719e+06, -1.52877000e+03], [ 6.10522590e+05, 6.07368749e+06, -1.54999000e+03], [ 6.10579060e+05, 6.07368907e+06, -1.60035000e+03], [ 6.10624780e+05, 6.07369035e+06, -1.62512000e+03], [ 6.10647640e+05, 6.07369099e+06, -1.65866000e+03], [ 6.10647640e+05, 6.07369099e+06, -1.68875000e+03], [ 6.10682600e+05, 6.07369197e+06, -1.72940000e+03], [ 6.10704120e+05, 6.07369257e+06, -1.75239000e+03], [ 6.10704120e+05, 6.07369257e+06, -1.77622000e+03], [ 6.10726980e+05, 6.07369321e+06, -1.80725000e+03], [ 6.10761940e+05, 6.07369418e+06, -1.84612000e+03], [ 6.11012050e+05, 6.07370117e+06, -1.50046000e+03], [ 6.11012050e+05, 6.07370117e+06, -1.52522000e+03], [ 6.11022810e+05, 6.07370147e+06, -1.54999000e+03], [ 6.11022810e+05, 6.07370147e+06, -1.57120000e+03], [ 6.11045670e+05, 6.07370211e+06, -1.58708000e+03], [ 6.11068530e+05, 6.07370275e+06, -1.61362000e+03], [ 6.11068530e+05, 6.07370275e+06, -1.64100000e+03], [ 6.11057770e+05, 6.07370245e+06, -1.66482000e+03], [ 6.11080630e+05, 6.07370309e+06, -1.68875000e+03], [ 6.10999950e+05, 6.07370083e+06, -1.71791000e+03], [ 6.10989190e+05, 6.07370053e+06, -1.74351000e+03], [ 6.10999950e+05, 6.07370083e+06, -1.76033000e+03], [ 6.11591610e+05, 6.07371737e+06, -1.47214000e+03], [ 6.11580850e+05, 6.07371707e+06, -1.49607000e+03], [ 6.11603710e+05, 6.07371771e+06, -1.52522000e+03], [ 6.11637320e+05, 6.07371865e+06, -1.55176000e+03], [ 6.11660180e+05, 6.07371929e+06, -1.57559000e+03], [ 6.11693800e+05, 6.07372023e+06, -1.60746000e+03], [ 6.11716660e+05, 6.07372087e+06, -1.64455000e+03], [ 6.11705900e+05, 6.07372056e+06, -1.68875000e+03], [ 6.11762380e+05, 6.07372214e+06, -1.72857000e+03], [ 6.11785240e+05, 6.07372278e+06, -1.75061000e+03], [ 6.11785240e+05, 6.07372278e+06, -1.78071000e+03], [ 6.11796000e+05, 6.07372308e+06, -1.80986000e+03], [ 6.11808100e+05, 6.07372342e+06, -1.84518000e+03], [ 6.10431150e+05, 6.07368494e+06, -1.74184000e+03], [ 6.10466110e+05, 6.07368592e+06, -1.77893000e+03], [ 6.10476870e+05, 6.07368622e+06, -1.82136000e+03], [ 6.10443250e+05, 6.07368528e+06, -1.83285000e+03], [ 6.11193580e+05, 6.07370625e+06, -1.70735000e+03], [ 6.11159960e+05, 6.07370531e+06, -1.73651000e+03], [ 6.11182820e+05, 6.07370595e+06, -1.75950000e+03], [ 6.11193580e+05, 6.07370625e+06, -1.79837000e+03], [ 6.11250060e+05, 6.07370782e+06, -1.82313000e+03], [ 6.11272920e+05, 6.07370846e+06, -1.84435000e+03], [ 6.11841710e+05, 6.07372436e+06, -1.49607000e+03], [ 6.11841710e+05, 6.07372436e+06, -1.52961000e+03], [ 6.11818860e+05, 6.07372372e+06, -1.56232000e+03], [ 6.11773140e+05, 6.07372244e+06, -1.61268000e+03], [ 6.11728760e+05, 6.07372120e+06, -1.62689000e+03], [ 6.12433370e+05, 6.07374090e+06, -1.50578000e+03], [ 6.12433370e+05, 6.07374090e+06, -1.52344000e+03], [ 6.12456230e+05, 6.07374153e+06, -1.55437000e+03], [ 6.12444130e+05, 6.07374120e+06, -1.57914000e+03], [ 6.12489850e+05, 6.07374247e+06, -1.60746000e+03], [ 6.12501950e+05, 6.07374281e+06, -1.64194000e+03], [ 6.12501950e+05, 6.07374281e+06, -1.66838000e+03], [ 6.12524810e+05, 6.07374345e+06, -1.72324000e+03], [ 6.12604150e+05, 6.07374567e+06, -1.78771000e+03], [ 6.12672720e+05, 6.07374758e+06, -1.83546000e+03], [ 6.13718880e+05, 6.07377682e+06, -1.58447000e+03], [ 6.13752500e+05, 6.07377776e+06, -1.63922000e+03], [ 6.13808980e+05, 6.07377934e+06, -1.69670000e+03], [ 6.13843940e+05, 6.07378032e+06, -1.74445000e+03], [ 6.13831840e+05, 6.07377998e+06, -1.77716000e+03], [ 6.13854690e+05, 6.07378062e+06, -1.84173000e+03], [ 6.13354480e+05, 6.07376664e+06, -1.56232000e+03], [ 6.13343720e+05, 6.07376634e+06, -1.59596000e+03], [ 6.13343720e+05, 6.07376634e+06, -1.65249000e+03], [ 6.13365230e+05, 6.07376694e+06, -1.68165000e+03], [ 6.14116910e+05, 6.07378795e+06, -1.52250000e+03], [ 6.14071190e+05, 6.07378667e+06, -1.59858000e+03], [ 6.14071190e+05, 6.07378667e+06, -1.64278000e+03], [ 6.13979750e+05, 6.07378411e+06, -1.69670000e+03], [ 6.13968990e+05, 6.07378381e+06, -1.69670000e+03], [ 6.13377330e+05, 6.07376728e+06, -1.68081000e+03], [ 6.13456670e+05, 6.07376949e+06, -1.72146000e+03], [ 6.13468770e+05, 6.07376983e+06, -1.77454000e+03], [ 6.13513150e+05, 6.07377107e+06, -1.83996000e+03], [ 6.13127230e+05, 6.07376029e+06, -1.66221000e+03], [ 6.13150080e+05, 6.07376093e+06, -1.69753000e+03], [ 6.13183700e+05, 6.07376187e+06, -1.75239000e+03], [ 6.08992090e+05, 6.07389481e+06, -1.54643000e+03], [ 6.09025700e+05, 6.07389575e+06, -1.58447000e+03], [ 6.09060660e+05, 6.07389672e+06, -1.65511000e+03], [ 6.09094280e+05, 6.07389766e+06, -1.70641000e+03], [ 6.09150760e+05, 6.07389924e+06, -1.77893000e+03], [ 6.09230090e+05, 6.07390146e+06, -1.84612000e+03], [ 6.10277600e+05, 6.07393073e+06, -1.47214000e+03], [ 6.10288350e+05, 6.07393103e+06, -1.51101000e+03], [ 6.10288350e+05, 6.07393103e+06, -1.54549000e+03], [ 6.10356930e+05, 6.07393295e+06, -1.60296000e+03], [ 6.10311210e+05, 6.07393167e+06, -1.65072000e+03], [ 6.10288350e+05, 6.07393103e+06, -1.70819000e+03], [ 6.10413410e+05, 6.07393453e+06, -1.72679000e+03], [ 6.10402650e+05, 6.07393423e+06, -1.78604000e+03], [ 6.10311210e+05, 6.07393167e+06, -1.84612000e+03], [ 6.14109920e+05, 6.07403784e+06, -1.53316000e+03], [ 6.14097820e+05, 6.07403750e+06, -1.57475000e+03], [ 6.14074960e+05, 6.07403686e+06, -1.63483000e+03], [ 6.13995630e+05, 6.07403464e+06, -1.68781000e+03], [ 6.12199140e+05, 6.07398444e+06, -1.51456000e+03], [ 6.12187040e+05, 6.07398410e+06, -1.55343000e+03], [ 6.12199140e+05, 6.07398444e+06, -1.60035000e+03], [ 6.12289230e+05, 6.07398695e+06, -1.65866000e+03], [ 6.12357810e+05, 6.07398887e+06, -1.72857000e+03], [ 6.12528580e+05, 6.07399364e+06, -1.83996000e+03], [ 6.12676500e+05, 6.07399778e+06, -1.51812000e+03], [ 6.12710110e+05, 6.07399872e+06, -1.56409000e+03], [ 6.12732970e+05, 6.07399936e+06, -1.62418000e+03], [ 6.12870130e+05, 6.07400319e+06, -1.74184000e+03], [ 6.13108140e+05, 6.07400984e+06, -1.59502000e+03], [ 6.13108140e+05, 6.07400984e+06, -1.64455000e+03], [ 6.13143100e+05, 6.07401082e+06, -1.70202000e+03], [ 6.13188820e+05, 6.07401210e+06, -1.74184000e+03], [ 6.11573860e+05, 6.07396696e+06, -1.48980000e+03], [ 6.11573860e+05, 6.07396696e+06, -1.54727000e+03], [ 6.11676060e+05, 6.07396982e+06, -1.61895000e+03], [ 6.11698920e+05, 6.07397046e+06, -1.66577000e+03], [ 6.11709680e+05, 6.07397076e+06, -1.67109000e+03], [ 6.11834730e+05, 6.07397425e+06, -1.49690000e+03], [ 6.11778250e+05, 6.07397267e+06, -1.52522000e+03], [ 6.11789010e+05, 6.07397297e+06, -1.59241000e+03], [ 6.13358250e+05, 6.07401683e+06, -1.59502000e+03], [ 6.13358250e+05, 6.07401683e+06, -1.68437000e+03], [ 6.13358250e+05, 6.07401683e+06, -1.68342000e+03], [ 6.13768370e+05, 6.07402829e+06, -1.59419000e+03], [ 6.13756270e+05, 6.07402795e+06, -1.67287000e+03], [ 6.11027930e+05, 6.07395170e+06, -1.49952000e+03], [ 6.11050790e+05, 6.07395234e+06, -1.55615000e+03], [ 6.11050790e+05, 6.07395234e+06, -1.62595000e+03], [ 6.11073640e+05, 6.07395298e+06, -1.68875000e+03], [ 6.11221560e+05, 6.07395712e+06, -1.70286000e+03], [ 6.11152980e+05, 6.07395520e+06, -1.74706000e+03], [ 6.11198700e+05, 6.07395648e+06, -1.81164000e+03], [ 6.11243070e+05, 6.07395772e+06, -1.84435000e+03], [ 6.11698920e+05, 6.07397046e+06, -1.67109000e+03], [ 6.11744640e+05, 6.07397173e+06, -1.72230000e+03], [ 6.11834730e+05, 6.07397425e+06, -1.84435000e+03], [ 6.09087300e+05, 6.07414756e+06, -1.57120000e+03], [ 6.09133020e+05, 6.07414883e+06, -1.66932000e+03], [ 6.09212350e+05, 6.07415105e+06, -1.75061000e+03], [ 6.09291690e+05, 6.07415327e+06, -1.84790000e+03], [ 6.10406420e+05, 6.07418442e+06, -1.71080000e+03], [ 6.10497860e+05, 6.07418698e+06, -1.77977000e+03], [ 6.10497860e+05, 6.07418698e+06, -1.82669000e+03], [ 6.10758730e+05, 6.07419427e+06, -1.72585000e+03], [ 6.10793690e+05, 6.07419524e+06, -1.80453000e+03], [ 6.11156750e+05, 6.07420539e+06, -1.70380000e+03], [ 6.11248190e+05, 6.07420795e+06, -1.84173000e+03], [ 6.10656530e+05, 6.07419141e+06, -1.47830000e+03], [ 6.10668640e+05, 6.07419175e+06, -1.64539000e+03], [ 6.10758730e+05, 6.07419427e+06, -1.72857000e+03], [ 6.10952360e+05, 6.07419968e+06, -1.49952000e+03], [ 6.11043800e+05, 6.07420223e+06, -1.58792000e+03], [ 6.11146000e+05, 6.07420509e+06, -1.70464000e+03], [ 6.14090840e+05, 6.07428739e+06, -1.53577000e+03], [ 6.14022260e+05, 6.07428548e+06, -1.69231000e+03], [ 6.12669510e+05, 6.07424767e+06, -1.52877000e+03], [ 6.12715230e+05, 6.07424895e+06, -1.59941000e+03], [ 6.12760950e+05, 6.07425023e+06, -1.69753000e+03], [ 6.12817430e+05, 6.07425180e+06, -1.73295000e+03], [ 6.12282250e+05, 6.07423685e+06, -1.51279000e+03], [ 6.12362930e+05, 6.07423910e+06, -1.57642000e+03], [ 6.12442260e+05, 6.07424132e+06, -1.66660000e+03], [ 6.12533700e+05, 6.07424387e+06, -1.73034000e+03], [ 6.11771270e+05, 6.07422257e+06, -1.64194000e+03], [ 6.11794130e+05, 6.07422320e+06, -1.72230000e+03], [ 6.11873470e+05, 6.07422542e+06, -1.84790000e+03], [ 6.11577640e+05, 6.07421715e+06, -1.49335000e+03], [ 6.11634110e+05, 6.07421873e+06, -1.59680000e+03], [ 6.11794130e+05, 6.07422320e+06, -1.52783000e+03], [ 6.11748410e+05, 6.07422193e+06, -1.59596000e+03], [ 6.13101160e+05, 6.07425973e+06, -1.58447000e+03], [ 6.13090400e+05, 6.07425943e+06, -1.67987000e+03], [ 6.10406420e+05, 6.07418442e+06, -1.70903000e+03], [ 6.10406420e+05, 6.07418442e+06, -1.63212000e+03], [ 6.10372810e+05, 6.07418348e+06, -1.58353000e+03], [ 6.10793690e+05, 6.07419524e+06, -1.80192000e+03], [ 6.10850170e+05, 6.07419682e+06, -1.84696000e+03], [ 6.12294350e+05, 6.07423718e+06, -1.65333000e+03], [ 6.12408650e+05, 6.07424038e+06, -1.74623000e+03], [ 6.12533700e+05, 6.07424387e+06, -1.84873000e+03], [ 6.09087300e+05, 6.07414756e+06, -1.57026000e+03], [ 6.09064440e+05, 6.07414692e+06, -1.50046000e+03], [ 6.10327090e+05, 6.07418220e+06, -1.47653000e+03], [ 6.10372810e+05, 6.07418348e+06, -1.58447000e+03], [ 6.09069560e+05, 6.07439715e+06, -1.47747000e+03], [ 6.09228230e+05, 6.07440158e+06, -1.69137000e+03], [ 6.09364040e+05, 6.07440538e+06, -1.84696000e+03], [ 6.10320110e+05, 6.07443210e+06, -1.47747000e+03], [ 6.10342960e+05, 6.07443274e+06, -1.61801000e+03], [ 6.10433060e+05, 6.07443525e+06, -1.75678000e+03], [ 6.10501640e+05, 6.07443717e+06, -1.84967000e+03], [ 6.10490880e+05, 6.07443687e+06, -1.84790000e+03], [ 6.10603830e+05, 6.07444003e+06, -1.48802000e+03], [ 6.10672410e+05, 6.07444194e+06, -1.59241000e+03], [ 6.10751750e+05, 6.07444416e+06, -1.71613000e+03], [ 6.10876800e+05, 6.07444766e+06, -1.84435000e+03], [ 6.10934620e+05, 6.07444927e+06, -1.48280000e+03], [ 6.11126910e+05, 6.07445465e+06, -1.69670000e+03], [ 6.11274820e+05, 6.07445878e+06, -1.84696000e+03], [ 6.11570650e+05, 6.07446705e+06, -1.48718000e+03], [ 6.11662090e+05, 6.07446960e+06, -1.58969000e+03], [ 6.11764290e+05, 6.07447246e+06, -1.73734000e+03], [ 6.11922960e+05, 6.07447689e+06, -1.84696000e+03], [ 6.12253750e+05, 6.07448614e+06, -1.50840000e+03], [ 6.12310230e+05, 6.07448772e+06, -1.60474000e+03], [ 6.12389560e+05, 6.07448993e+06, -1.73295000e+03], [ 6.12548230e+05, 6.07449437e+06, -1.84518000e+03], [ 6.12628910e+05, 6.07449662e+06, -1.53577000e+03], [ 6.12685390e+05, 6.07449820e+06, -1.67287000e+03], [ 6.12764730e+05, 6.07450042e+06, -1.73118000e+03], [ 6.14073100e+05, 6.07453698e+06, -1.55615000e+03], [ 6.13970900e+05, 6.07453413e+06, -1.75678000e+03], [ 6.13390000e+05, 6.07451789e+06, -1.58708000e+03], [ 6.13537910e+05, 6.07452203e+06, -1.78071000e+03], [ 6.13026940e+05, 6.07450775e+06, -1.58269000e+03], [ 6.13197710e+05, 6.07451252e+06, -1.77360000e+03], [ 6.09175530e+05, 6.07465020e+06, -1.48186000e+03], [ 6.09335540e+05, 6.07465467e+06, -1.70464000e+03], [ 6.09402780e+05, 6.07465655e+06, -1.84873000e+03], [ 6.10290260e+05, 6.07468135e+06, -1.47485000e+03], [ 6.10369600e+05, 6.07468357e+06, -1.60390000e+03], [ 6.10438180e+05, 6.07468548e+06, -1.73379000e+03], [ 6.10517510e+05, 6.07468770e+06, -1.84873000e+03], [ 6.10517510e+05, 6.07468770e+06, -1.84790000e+03], [ 6.11119930e+05, 6.07470454e+06, -1.54110000e+03], [ 6.11244980e+05, 6.07470803e+06, -1.74006000e+03], [ 6.11302800e+05, 6.07470965e+06, -1.84612000e+03], [ 6.10859060e+05, 6.07469725e+06, -1.74184000e+03], [ 6.10938400e+05, 6.07469946e+06, -1.84790000e+03], [ 6.11836640e+05, 6.07472457e+06, -1.64278000e+03], [ 6.12246760e+05, 6.07473603e+06, -1.51906000e+03], [ 6.12257520e+05, 6.07473633e+06, -1.59858000e+03], [ 6.12348960e+05, 6.07473889e+06, -1.75856000e+03], [ 6.12451160e+05, 6.07474174e+06, -1.83285000e+03], [ 6.12599070e+05, 6.07474588e+06, -1.56587000e+03], [ 6.12632690e+05, 6.07474682e+06, -1.68081000e+03], [ 6.14076870e+05, 6.07478718e+06, -1.56765000e+03], [ 6.14066110e+05, 6.07478688e+06, -1.72407000e+03], [ 6.13337300e+05, 6.07476651e+06, -1.58530000e+03], [ 6.13440840e+05, 6.07476940e+06, -1.77099000e+03], [ 6.13645230e+05, 6.07477511e+06, -1.59858000e+03], [ 6.13655990e+05, 6.07477541e+06, -1.63839000e+03], [ 6.11563670e+05, 6.07471694e+06, -1.48980000e+03], [ 6.11655110e+05, 6.07471949e+06, -1.57297000e+03], [ 6.11734440e+05, 6.07472171e+06, -1.67465000e+03], [ 6.11780160e+05, 6.07472299e+06, -1.79304000e+03], [ 6.11813780e+05, 6.07472393e+06, -1.84696000e+03], [ 6.11803020e+05, 6.07472363e+06, -1.53222000e+03], [ 6.11848740e+05, 6.07472491e+06, -1.60474000e+03]])
f3_corners_xy = np.array([
[605835.5, 6073556.5],
[629576.25, 6074220.0],
[629122.5, 6090463.2]
])
f3_corners_ix = np.array([[0, 0],
[0, 950],
[650, 950]
])
import bruges as bg
transform = bg.transform.CoordTransform(f3_corners_ix, f3_corners_xy)
# Example:
transform.reverse(d[0, :2])
array([ 0, 124])
# Put it all together
def pts_to_ixt(fname, dt=0.004):
data = read_odt_pts(fname)
transform = bg.transform.CoordTransform(f3_corners_ix, f3_corners_xy)
ix = [transform.reverse(r) for r in data[:, :2]]
t = (data[:, 2][:, None] / dt).astype(int)
ixt = np.hstack([ix, t])
return ixt
ixt = pts_to_ixt("/home/matt/Downloads/salt.pck")
ixt
array([[325, 437, 445], [325, 440, 436], [325, 454, 419], [325, 455, 407], [325, 463, 400], [325, 476, 398], [325, 494, 406], [325, 508, 413], [325, 521, 420], [325, 541, 427], [325, 548, 421], [325, 562, 417], [325, 567, 416], [325, 443, 445]])
These are the (inline, crossline, timeslice) coordinates of the (UTMx, UTMy, TWTT) points in the pointset.
Let's start with a small example of random data.
# This is 278MB in memory - random integers in (0, 255).
f3 = np.random.randint(0, 256, size=(650, 950, 450), dtype=np.uint8)
samples = []
for (i, x, t) in ixt:
sample = f3[i-3:i+3, x-3:x+3, t]
samples.append(sample)
%matplotlib inline
import matplotlib.pyplot as plt
fig, axs = plt.subplots(nrows=2, ncols=5, figsize=(15, 6))
for ax, sample in zip(axs.ravel(), samples[:10]):
ax.imshow(sample)
In case the full volume is not available (eg from Data Underground), we can use a smaller version of F3 from the Geocomputing class.
import numpy as np
# f3 = np.load("/home/matt/Dropbox/dev/geocomp-19/data/F3_volume_3x3_16bit.npy")
import segyio
with segyio.open("/home/matt/Downloads/F3_entire.segy") as s:
f3 = segyio.cube(s)
f3.shape
(651, 951, 462)
# Normalize to 1
f3 = f3 / np.amax(np.abs(f3))
This volume is over 1GB:
f3.nbytes/1e9
1.144098648
np.save('/home/matt/F3_entire.npy', f3)
ma = np.percentile(f3[100], 99.8)
plt.figure(figsize=(15, 8))
plt.imshow(f3[10, :, :].T, aspect='auto', vmin=-ma, vmax=ma)
<matplotlib.image.AxesImage at 0x7f853d5482b0>
Let's do a quick experiment on a small subvolume. We're going to divide it into 3 × 3 subcubes, so the sides have to be divisible by 3.
f3_ = f3[10:31, 10:31, 15:450]
f3_.shape
(21, 21, 435)
'Tile' (in 3d) the volume. From https://stackoverflow.com/questions/42297115/numpy-split-cube-into-cubes
import numpy as np
def cubify(arr, newshape):
oldshape = np.array(arr.shape)
repeats = (oldshape / newshape).astype(int)
tmpshape = np.column_stack([repeats, newshape]).ravel()
order = np.arange(len(tmpshape))
order = np.concatenate([order[::2], order[1::2]])
# newshape must divide oldshape evenly or else ValueError will be raised
return arr.reshape(tmpshape).transpose(order).reshape(-1, *newshape)
X = cubify(f3_, (3, 3, 3)).reshape(-1, 27)
For loading into https://projector.tensorflow.org/ for example...
np.savetxt('cubelets.tsv', X, delimiter='\t')
import umap
reducer = umap.UMAP()
embedding = reducer.fit_transform(X)
--------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recent call last) <ipython-input-31-23e0a65beca0> in <module> ----> 1 import umap 2 3 reducer = umap.UMAP() 4 5 embedding = reducer.fit_transform(X) ModuleNotFoundError: No module named 'umap'
%matplotlib inline
import matplotlib.pyplot as plt
plt.figure(figsize=(15, 10))
plt.scatter(*embedding.T)
--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-32-98ceea9309ad> in <module> 3 4 plt.figure(figsize=(15, 10)) ----> 5 plt.scatter(*embedding.T) NameError: name 'embedding' is not defined
<Figure size 1080x720 with 0 Axes>
This is part of sklearn
:
import numpy as np
from sklearn.manifold import TSNE
embedding_tsne = TSNE().fit_transform(X)
embedding_tsne.shape
(7105, 2)
plt.figure(figsize=(15, 10))
plt.scatter(*embedding_tsne.T)
<matplotlib.collections.PathCollection at 0x7f18baf2c208>