コード例 #1
0
def get_datasets(filename1, filename2):
    rsf_format = '.rsf' in filename1 and '.rsf' in filename2
    bin_format = '.bin' in filename1 and '.bin' in filename2

    if rsf_format:
        file1 = rsf.Input(filename1)
        file2 = rsf.Input(filename2)

        data1 = file1.getalldata()
        data2 = file2.getalldata()
    elif bin_format:
        top_dir = filename1.split('/')[0]
        json_filename = os.path.join(top_dir, 'in_and_out', 'asofi3D.json')
        params = read_asofi3d_json(json_filename)

        TSNAP1, TSNAP2 = params['TSNAP1'], params['TSNAP2']
        TSNAPINC = params['TSNAPINC']
        nsnap = int(1 + np.floor((TSNAP2 - TSNAP1) / TSNAPINC))

        NX, NY, NZ = params['NX'], params['NY'], params['NZ']
        IDX, IDY, IDZ = params['IDX'], params['IDY'], params['IDZ']

        data1 = np.fromfile(filename1, dtype=np.float32)
        data2 = np.fromfile(filename2, dtype=np.float32)
        data1.reshape((NY / IDY, NX / IDX, NZ / IDZ, nsnap))
        data2.reshape((NY / IDY, NX / IDX, NZ / IDZ, nsnap))
    else:
        raise Exception('Cannot determine dataset format!')

    return data1, data2
コード例 #2
0
    def read(self,
             fre,
             fim,
             gather='all',
             fsrc='src.txt',
             frcv='rcv.txt',
             ffreq='freq.txt',
             inum=1):
        #sfile='src.dat', rfile='rcv.dat', ffile='freq.dat'):
        input_re = rsf.Input(fre)
        input_im = rsf.Input(fim)
        self.read_header(fre, fim, fsrc, frcv, ffreq)

        tmp_re = np.zeros((self.srcs.n, self.rcvs.n), 'f')
        tmp_im = np.zeros((self.srcs.n, self.rcvs.n), 'f')
        if gather == 's':
            isrc = inum
            tmpd_real = np.zeros((self.freqs.n, self.rcvs.n), 'f')
            tmpd_imag = np.zeros((self.freqs.n, self.rcvs.n), 'f')
            for ifreq in range(self.freqs.n):
                input_re.read(tmp_re)
                input_im.read(tmp_im)
                tmpd_real[ifreq, :] = tmp_re[isrc - 1, :]
                tmpd_imag[ifreq, :] = tmp_im[isrc - 1, :]

        elif gather == 'r':
            ircv = inum
            tmpd_real = np.zeros((self.freqs.n, self.srcs.n), 'f')
            tmpd_imag = np.zeros((self.freqs.n, self.srcs.n), 'f')
            for ifreq in range(self.freqs.n):
                input_re.read(tmp_re)
                input_im.read(tmp_im)
                tmpd_real[ifreq, :] = tmp_re[:, ircv - 1]
                tmpd_imag[ifreq, :] = tmp_im[:, ircv - 1]

        elif gather == 'f':
            ifreq = inum
            tmpd_real = np.zeros((self.srcs.n, self.rcvs.n), 'f')
            tmpd_imag = np.zeros((self.srcs.n, self.rcvs.n), 'f')
            for i in range(ifreq):
                input_re.read(tmpd_real)
                input_im.read(tmpd_imag)
        else:
            tmpd_real = np.zeros((self.freqs.n, self.srcs.n, self.rcvs.n), 'f')
            tmpd_imag = np.zeros((self.freqs.n, self.srcs.n, self.rcvs.n), 'f')
            input_re.read(tmpd_real)
            input_im.read(tmpd_imag)

        self.d = tmpd_real + 1.0j * tmpd_imag
コード例 #3
0
 def read(self, input=None, f=None, fsrc=None, frcv=None):
     if input is None:
         input = rsf.Input(f)
     self.read_header(input, fsrc=fsrc, frcv=frcv)
     self.d = np.zeros((self.nsrc, self.nt, self.nrcv), 'f')
     input.read(self.d)
     input.close()
コード例 #4
0
    def read_header(self, input=None, f=None, fsrc=None, frcv=None):
        if input is None:
            input = rsf.Input(f)
        self.nrcv = input.int('n1')
        self.nc = input.int('n2')
        self.nt = input.int('n3')
        self.drcv = input.float('d1')
        self.dc = input.float('d2')
        self.dt = input.float('d3')
        self.orcv = input.float('o1')
        self.oc = input.float('o2')
        self.ot = input.float('o3')
        if get_dim(input) >= 4:
            self.osrc = input.float('o4')
            self.nsrc = input.int('n4')
            self.dsrc = input.float('d4')
        else:
            self.nsrc = 1
            self.osrc = 0.
            self.dsrc = 1.
        self.set_t()
        # setup srcs and rcvs
        if fsrc:
            self.srcs = rsf_loc(fsrc)
        else:
            self.srcs = rn_loc(self.nsrc)

        if frcv:
            self.rcvs = rsf_loc(fsrc)
        else:
            self.rcvs = rn_loc(self.nrcv)
コード例 #5
0
ファイル: mctd.py プロジェクト: rienkt/rnpy
 def read_rsf(self, finput):
     try:
         input = rsf.Input(finput)
     except:
         input = finput
     self.get_header(input)
     self.initialise(0.)
     input.read(self.d)
コード例 #6
0
    def read(self, input=None, f=None):
        if input is None:
            input = rsf.Input(f)

        self.read_header(input=input)

        self.initiali1e(0.0)
        input.read(self.d)
        self.set_axis()
コード例 #7
0
ファイル: mctd.py プロジェクト: rienkt/rnpy
 def read(self, input=None, f=None):
     if input is None:
         try:
             input = rsf.Input(f)
         except:
             print("File %s doesn't exist" % f)
     self.read_header(input=input)
     self.d = np.zeros((self.nsrc, self.nt, self.nc, self.nrcv), 'f')
     input.read(self.d)
コード例 #8
0
 def read_header(self, input=None, f=None):
     if input is None:
         input = rsf.Input(f)
     self.nrcv = input.int('n1')
     self.nsrc = input.int('n2')
     self.drcv = input.float('d1')
     self.dsrc = input.float('d2')
     self.orcv = input.float('o1')
     self.osrc = input.float('o2')
コード例 #9
0
ファイル: mctd.py プロジェクト: rienkt/rnpy
    def read(self, input=None, f=None):
        if input is None:
            try:
                input = rsf.Input(f)
            except:
                print("file %s does not exist" % f)
        self.read_header(input=input)

        input.read(self.d)
コード例 #10
0
    def read(self, input=None, f=None):
        if input is None:
            input = rsf.Input(f)
        self.read_header(input=input)

        print(self.nsrc, self.nt, self.nc, self.nrcv)

        self.d = np.zeros((self.nsrc, self.nt, self.nc, self.nrcv), 'f')
        input.read(self.d)
コード例 #11
0
def rsf_loc(floc):
    input = rsf.Input(floc)
    n1 = input.int('n1')
    n2 = input.int('n2')
    loc = rn_loc(n=n2)
    tmp = np.zeros((loc.n, 2), dtype=np.float32)
    input.read(tmp)
    loc.x = tmp[:, 0]
    loc.z = tmp[:, 1]
    return loc
コード例 #12
0
ファイル: td_old.py プロジェクト: rienkt/rnpy
    def read_rsf(self,
                 input=None,
                 finput=None,
                 sfile='src.dat',
                 rfile='rcv.dat'):
        if input is None:
            input = rsf.Input(finput)

        self.read_header(input=input, sfile=sfile, rfile=rfile)
        self.data = np.zeros((self.nsrc, self.nrcv, self.nt), 'f')
        input.read(self.data)
コード例 #13
0
    def read(self, input=None, f=None):
        if input is None:
            input = rsf.Input(f)
        self.read_header(input)
        self.d = np.zeros((self.nsrc, self.nrcv), 'f')
        input.read(self.d)

        self.d = np.ma.masked_equal(self.d, 0.)
        if type(self.d.mask) is not np.ndarray:
            if self.d.mask is False:
                self.d.mask = np.zeros(0, dtype=np.bool)
            else:
                self.d.mask = np.zeros(1, dtype=np.bool)
コード例 #14
0
    def read_header(self,
                    fre,
                    fim,
                    fsrc='src.txt',
                    frcv='rcv.txt',
                    ffreq='freq.txt'):
        # sfile='src.dat', rfile='rcv.dat', ffile='freq.dat'):

        input_re = rsf.Input(fre)
        input_im = rsf.Input(fim)
        self.rcvs.n = input_re.int('n1')
        self.srcs.n = input_re.int('n2')
        self.rcvs.d = input_re.float('d1')
        self.srcs.d = input_re.float('d2')
        self.rcvs.o = input_re.float('o1')
        self.srcs.o = input_re.float('o2')

        if (get_dim(input_re) == 3):
            self.freqs.n = input_re.int('n3')
            self.freqs.d = input_re.float('d3')
            self.freqs.o = input_re.float('o3')
        else:
            self.freqs.n = 1
            self.freqs.d = 1.
            self.freqs.o = 1.

        if os.path.exists(fsrc):
            self.srcs.read(fsrc)
        else:
            self.srcs.d = np.arange(self.srcs.n)
        if os.path.exists(frcv):
            self.rcvs.read(frcv)
        else:
            self.rcvs.d = np.arange(self.rcvs.n)
        if os.path.exists(ffreq):
            self.freqs.read(ffreq)
        else:
            self.freqs.d = np.arange(self.freqs.n)
コード例 #15
0
ファイル: obj.py プロジェクト: rienkt/rnpy
    def read(self, input=None, f=None):
        if input is None:
            input = rsf.Input(f)
        self.niter = input.int('n1')
        self.diter = input.float('d1')
        self.oiter = input.float('o1')
        if (input.int('n2')):
            self.nblock = input.int('n2')
            self.dblock = input.float('d2')
            self.oblock = input.float('o2')

        self.data = np.zeros((self.nblock, self.niter), 'f')

        input.read(self.data)
        self.set_axis()
コード例 #16
0
ファイル: mctd.py プロジェクト: rienkt/rnpy
 def read_header(self, input=None, f=None):
     if input is None:
         input = rsf.Input(f)
     self.nrcv = input.int('n1')
     self.nc = input.int('n2')
     self.nt = input.int('n3')
     self.nsrc = input.int('n4')
     self.drcv = input.float('d1')
     self.dc = input.float('d2')
     self.dt = input.float('d3')
     self.dsrc = input.float('d4')
     self.orcv = input.float('o1')
     self.oc = input.float('o2')
     self.ot = input.float('o3')
     self.osrc = input.float('o4')
     self.set_t()
コード例 #17
0
    def read_header(self, input=None, f=None):
        if input is None:
            input = rsf.Input(f)
        self.n1 = input.int('n1')
        self.n2 = input.int('n2')
        self.n3 = input.int('n3')
        self.d1 = input.float('d1')
        self.d2 = input.float('d2')
        self.d3 = input.float('d3')
        self.o1 = input.float('o1')
        self.o2 = input.float('o2')
        self.o3 = input.float('o3')

        self.nc = self.n3
        self.dc = self.d3
        self.oc = self.o3
        self.nx = self.n2
        self.dx = self.d2
        self.ox = self.o2
        self.nz = self.n1
        self.dz = self.d1
        self.oz = self.o1
        self.set_t()
コード例 #18
0
    def read_header(self, input=None, f=None, fsrc=None, frcv=None):
        if input is None:
            input = rsf.Input(f)
        self.nrcv = input.int('n1')
        self.nt = input.int('n2')
        self.nsrc = input.int('n3')
        self.drcv = input.float('d1')
        self.dt = input.float('d2')
        self.dsrc = input.float('d3')
        self.orcv = input.float('o1')
        self.ot = input.float('o2')
        self.osrc = input.float('o3')
        self.t = set_t(self.ot, self.dt, self.nt)
        # setup srcs and rcvs
        if fsrc:
            self.srcs = rsf_loc(fsrc)
        else:
            self.srcs = rn_loc(self.nsrc)

        if frcv:
            self.rcvs = rsf_loc(fsrc)
        else:
            self.rcvs = rn_loc(self.nrcv)
コード例 #19
0
ファイル: mctd.py プロジェクト: rienkt/rnpy
    def read_header(self, input=None, f=None):
        if input is None:
            try:
                input = rsf.Input(f)
            except:
                print("file %s does not exist" % f)
        self.nz = input.int('n1')
        self.nx = input.int('n2')
        self.nc = input.int('n3')
        self.nt = input.int('n4')
        self.dz = input.float('d1')
        self.dx = input.float('d2')
        self.dc = input.float('d3')
        self.dt = input.float('d4')
        self.oz = input.float('o1')
        self.ox = input.float('o2')
        self.oc = input.float('o3')
        self.ot = input.float('o4')
        self.ntrace = self.nx * self.nz

        self.x = np.arange(0, self.nx, dtype=np.float) * self.dx + self.ox
        self.z = np.arange(0, self.nz, dtype=np.float) * self.dz + self.oz

        self.initialize()
コード例 #20
0
from __future__ import print_function
import rsf.api as rsf
import numpy as np
import scipy as sp
import matplotlib.pyplot as plt

fin = rsf.Input('/home/karl/m8r/madagascar-1.3/user/karl/model.rsf')

print("fin.shape()=", fin.shape())
print("list(fin.shape())=", list(fin.shape()))
print("(list(fin.shape())).reverse()=", (list(fin.shape())).reverse())
mylist = list(fin.shape())
mylist.reverse()

data = np.zeros(mylist, 'f')
print("data array shape=", data.shape)
print("\n")
fin.read(data)
print("data array shape=", data.shape)
print("data[0,:,:].shape=", data[0, :, :].shape)

# in python and c you index data[i3,i2,i1].   Shape need to be (n3,n2,n1),
# reverse from that it in fin.shape()

fin1 = rsf.Input('/home/karl/m8r/madagascar-1.3/user/karl/model.rsf')
data1 = np.zeros(fin1.shape(), 'f')
fin1.read(data1)

plt.subplot(121)
plt.imshow(data[0, :, :].T)  # good left plot has shape reversed
コード例 #21
0
ファイル: Mbackusave.py プロジェクト: mdphill/src
#!/usr/bin/env python
'C-Wave Backus Averaging (See Marion et al., 1994)'

import sys
import numpy as np
import rsf.api as rsf
import string
import math as mt

# Inputs
par = rsf.Par()
slowness_name = par.string('slowness') # Slowness from Logs
rhob_name = par.string('density') # Density from Logs

depth = rsf.Input() # Depth from Logs
slow = rsf.Input(slowness_name)
rhob = rsf.Input(rhob_name)

ratio = par.float("ratio") # Percent of dom wavelength
peak_f = par.float("peak_f") # Dom wavelength
depthsample = par.float("depthsample") # Depth Sampling

depth_bkn = rsf.Output() # Output depth sampling
vel_bkn = rsf.Output('vel_bk') # Backus Avg. velocity
slow_bkn = rsf.Output('slow_bk') # Backus Avg. slowness
rhob_bkn = rsf.Output('rhob_bk') # Averaged density

assert 'float' == depth.type
assert 'float' == slow.type
assert 'float' == rhob.type
コード例 #22
0
        for i in range(1, 4):
            nkey = 'n%d' % i
            dkey = 'd%d' % i
            okey = 'o%d' % i
            self.dims[nkey] = RSFFile.int(nkey)
            self.dims[dkey] = RSFFile.float(dkey)
            self.dims[okey] = RSFFile.float(okey)
            self.shape.append(RSFFile.int(nkey))
        self.shape.reverse()


# end class def

par = rsf.Par()

fin = rsf.Input()
header = Header(fin)

data = numpy.zeros(header.shape, 'f')

fin.read(data)

mlab.pipeline.image_plane_widget(mlab.pipeline.scalar_field(data),
                                 plane_orientation='x_axes',
                                 slice_index=10)

mlab.pipeline.image_plane_widget(mlab.pipeline.scalar_field(data),
                                 plane_orientation='y_axes',
                                 slice_index=10)

mlab.pipeline.image_plane_widget(mlab.pipeline.scalar_field(data),
コード例 #23
0
#!/usr/bin/env python
'''
1D dataset padding 

Built for time-depth relationship manipulation. LSIM scan/pick is smooth intoducing non-real updates at top of pick.
'''

import sys
import numpy as np
import rsf.api as rsf
import string
import math as mt

par = rsf.Par()
loga = rsf.Input()  # Input 1D dataset

assert 'float' == loga.type
sdepth = loga.int("n1")

log = np.zeros(sdepth, 'f')
loga.read(log)

loc = par.int("loc")  # Location of value used to replace
assert loc
num = par.int("num")  # Number of values to replace at beginning of dataset
assert num

log_eo = rsf.Output()  # Output 1D dataset

log_e = np.empty(sdepth)
コード例 #24
0
import rsf.api as rsf

try:
    import numpy as np
except Exception, e:
    print 'ERROR : need numpy'
    sys.exit(1)

try:
    from pylab import *
    from matplotlib.colors import LogNorm
except Exception, e:
    print 'ERROR : need numpy'
    sys.exit(1)

pi = rsf.Input()
po = rsf.Output()
par = rsf.Par()

dim = pi.shape()

n1 = pi.int("n1")
o1 = pi.float("o1")
d1 = pi.float("d1")
n2 = pi.int("n2")
o2 = pi.float("o2")
d2 = pi.float("d2")

# x label
label1 = par.string("label1")
if label1 == None:
コード例 #25
0
ファイル: hessPlot.py プロジェクト: vehagn/seisPlotting
elif pDir == 'x':
    zStart = 190
    zStop = zStart
    xStart = 469
    xStop = 529

folder = project + part + freq + '/'
modelFolder = project + 'model/'

if not os.path.exists(save + part + freq + '/'):
    os.makedirs(save + part + freq + '/')

dz = 10
dx = dz

fin = rsf.Input(modelFolder + 'rh.rsf')
[n, m] = fin.shape()
data = np.zeros([n, m], 'f')
fin.read(data)
rho = np.array(data.transpose())
rhoNorm = normalize(rho)

fin = rsf.Input(modelFolder + 'vp.rsf')
fin.read(data)
vp = np.array(data.transpose())
vpNorm = normalize(vp)

fin = rsf.Input(modelFolder + 'vs.rsf')
fin.read(data)
vs = np.array(data.transpose())
vsNorm = normalize(vs)
コード例 #26
0
ファイル: rdata.py プロジェクト: rienkt/rnpy
  def read_header(self, fre, 
                  sfile = 'src.dat', rfile = 'rcv.dat', ffile = 'freq.dat'):
    self.input = rsf.Input(fre)

    self.nrcv = self.input.int('n1')
    self.nsrc = self.input.int('n2')
    self.drcv = self.input.float('d1')
    self.dsrc = self.input.float('d2')
    self.orcv = self.input.float('o1')
    self.osrc = self.input.float('o2')

    if (get_dim(self.input) >= 3):
      self.nfreq = self.input.int('n3')
      self.dfreq = self.input.float('d3')
      self.ofreq = self.input.float('o3')
    else:
      self.nfreq = 1
      self.dfreq = 1.
      self.ofreq = 1.

    if (get_dim(self.input) >= 4):
      self.niter = self.input.int('n4')
      self.diter = self.input.float('d4')
      self.oiter = self.input.float('o4')
    else:
      self.niter = 1
      self.diter = 1.
      self.oiter = 1.


    # define axis
    if os.path.isfile(sfile):
      self.srcx = np.fromfile( sfile, sep = ' ', count = self.nsrc * 2
                  ).reshape( [self.nsrc, 2] )[:, 0]
      self.srcz = np.fromfile( sfile, sep = ' ', count = self.nsrc * 2 
                  ).reshape( [self.nsrc, 2] )[:, 1]
    else:
      self.srcx = np.arange( 0, self.nsrc, dtype = 'f' )
      self.srcz = np.arange( 0, self.nsrc, dtype = 'f' )

    if os.path.isfile(rfile):
      self.rcvx = np.fromfile( rfile, sep = ' ', count = self.nrcv * 2
                ).reshape( [self.nrcv, 2] )[:, 0]
      self.rcvz = np.fromfile( rfile, sep = ' ', count = self.nrcv * 2
                ).reshape( [self.nrcv, 2] )[:, 1]
    else:
      self.rcvx=np.arange(0., self.nrcv, dtype = 'f')
      self.rcvz=np.arange(0., self.nrcv, dtype = 'f')

    if os.path.isfile(ffile):
      self.freq = np.fromfile( ffile, sep=' ', count = self.nfreq + 1
                )[ 1 : ( self.nfreq + 1)]
    else :
      self.freq = ( np.arange(0, self.nfreq, dtype = 'f' ) * self.dfreq 
                    + self.ofreq )

    self.iter = np.arange(0, self.niter, dtype = 'f')


    try :
      self.srcx = self.srcx * self.scale
      self.srcz = self.srcz * self.scale
      self.rcvx = self.rcvx * self.scale
      self.rcvz = self.rcvz * self.scale
    except:
      print 'no scaling for axis'
コード例 #27
0
ファイル: Msbslice2.py プロジェクト: ymustc/src
import rsf.api as rsf
import string
import math as mt

par = rsf.Par()
depth_name = par.string('depth')
par = rsf.Par()
log1_name = par.string('log1')
par = rsf.Par()
log2_name = par.string('log2')
par = rsf.Par()
log3_name = par.string('log3')
par = rsf.Par()
log4_name = par.string('log4')

logrefa = rsf.Input()  # Reference well log
deptha = rsf.Input(depth_name)  # Depth information
log1a = rsf.Input(log1_name)  # Well log 1
log2a = rsf.Input(log2_name)  # Well log 2
log3a = rsf.Input(log3_name)  # Well log 3
log4a = rsf.Input(log4_name)  # Well log 4

assert 'float' == logrefa.type
assert 'float' == deptha.type
assert 'float' == log1a.type
assert 'float' == log2a.type
assert 'float' == log3a.type
assert 'float' == log4a.type

sdepth = deptha.int("n1")
コード例 #28
0
'''
Hard constraint 2D map

For use with LSIM if a specific alignment location is desired.
Use with reference and real datasets and scale LSIM scan by output
'''

import sys
import numpy as np
import rsf.api as rsf
import string
import math as mt

# Inputs
par = rsf.Par()
logrefa = rsf.Input()  # Input 1D data

assert 'float' == logrefa.type

sdepth = logrefa.int("n1")
sd = logrefa.float("d1")
so = logrefa.float("o1")

logref = np.zeros(sdepth, 'f')
logrefa.read(logref)

num = par.float("value")  # Location of hard constraint

window = par.int("wind")  # Number of samples of hard constraint
assert window
コード例 #29
0
ファイル: Mfindmax.py プロジェクト: jcapriot/src
#!/usr/bin/env python
'''
find max value in a file
'''
from __future__ import print_function
import rsf.api as rsf
import numpy as np
import sys

par = rsf.Par()

verb = par.bool('verb', False)  # verbosity flag

Fin = rsf.Input()  # input file
n1 = Fin.int("n1")
nn = Fin.size(1)
# number of traces
din = np.zeros(n1, 'f')

Fou = rsf.Output()  # output file
Fou.put("n1", 1)
Fou.put("o1", 0)
Fou.put('d1', 1)
Fou.put("n2", 1)
Fou.put("n3", 1)
Fou.put("n4", 1)

dou = np.zeros(1, 'f')

mymax = 0
for i in range(nn):
コード例 #30
0
ファイル: Mcorop.py プロジェクト: wangdanhui970520/mada
Correlation operator w/ adjoint
wfl [file] : is taken from stdin
opr [file] : is taken from  "opr"
Requires both files to have the same dimensions
'''
import rsf.api as rsf
import numpy as np
import sys

par = rsf.Par()

verb = par.bool('verb',False) # verbosity flag
adj  = par.bool( 'adj',False) # adjoint flag

# Operator
Fopr = rsf.Input("opr")
nt = Fopr.int  ("n1")
ot = Fopr.float("o1")
dt = Fopr.float("d1")
lt = Fopr.string("label1")
ut = Fopr.string("unit1")

nn = Fopr.size(1)*Fopr.size(2)*Fopr.size(3) # number of traces

opr = np.zeros(nt,'f') # allocate opr array

# ------------------------------------------------------------
# setup output 
if adj==1:
    Fcor = rsf.Input()         # input cor