コード例 #1
0
ファイル: geom.py プロジェクト: bsmithyman/waveserv
def geometry_render_xz (projnm):

  from pygeo.fullpy import readini
  inidict = readini(projnm + '.ini')

  # Get existing ky information
  srcs = inidict['srcs']
  recs = inidict['recs']
  geos = inidict['geos']

  fig = Figure(**figopts_geometry)

  axz = fig.add_subplot(1,1,1, aspect=1.0, adjustable='box')
  axz.yaxis.set_major_formatter(FormatStrFormatter('%+d'))

  if (srcs.shape != (0,)):
    axz.plot(srcs[:,0], -srcs[:,2], 'r,', label='Sources')

  if (recs.shape != (0,)):
    axz.plot(recs[:,0], -recs[:,2], 'g,', label='Hydrophones')

  if (geos.shape != (0,)):
    axz.plot(geos[:,0], -geos[:,2], 'b,', label='Geophones')

  print figextent
  axz.plot([pfigextent[0],pfigextent[0],pfigextent[1],pfigextent[1]],
           [pfigextent[2],pfigextent[3],pfigextent[3],pfigextent[2]],
           'k:')#figopts_geometry['facecolor'])

  rect = mpatches.Rectangle((figextent[0],-figextent[2]), figextent[1]-figextent[0], -figextent[3] + figextent[2] , edgecolor='k', fill=False)
  axz.add_patch(rect)

  #axz.legend()
  axz.set_ylabel('Elevation (m)')
  axz.set_xlabel('Line Location (m)')
  axz.set_title('Cross Section')

  #ax.axis(figextent)
  #axz.axis('scaled')
  axz.axis(pfigextent)

  canvas = FigureCanvas(fig)
  renderer = canvas.get_renderer()
  renderer.dpi = dpi
  canvas.draw()
  l,b,w,h = [int(item) for item in canvas.figure.bbox.bounds]
  im = Image.fromstring("RGB", (w,h), canvas.tostring_rgb())
  im = auto_crop(im)

  return im
コード例 #2
0
ファイル: geom.py プロジェクト: bsmithyman/waveserv
def view_geom (request):
  '''
  Function that handles processing for the geom information renderers.
  '''

  # Get session and request QueryDict objects
  s = request.session
  r = request.REQUEST
  q = QueryDict('pagetitle=%s'%page_titles['geom'])
  q = q.copy()

  inidict = readini(PROJNM + '.ini')

  q.update({'projnm': PROJNM})
  q.update(inidict)

  return render_to_response('geom.html', q, context_instance=RequestContext(request))
コード例 #3
0
ファイル: cycleskip.py プロジェクト: bsmithyman/waveserv
def cycleskip_render(projnm, freq, obsfile, estfile):

    from pygeo.fullpy import readini
    inidict = readini(projnm + '.ini')

    srcs = inidict['srcs']
    recs = inidict['recs']

    offsets3d, offsets2d = offset_image(srcs, recs)

    reader = ftypes['utest']
    dobs = reader(obsfile)
    dest = reader(estfile)

    phi = np.angle(dest * dobs.conj())

    fig = Figure(**figopts_cycleskip)

    ax = fig.add_subplot(1, 1, 1)
    ax.set_title('Phase Error $\phi$ at %3.3f Hz' % (freq, ))
    cs = ax.contour(offsets3d, colors='k', origin='lower')
    cl = ax.clabel(cs, inline=True, fmt='%6.0f m')
    cs = ax.contour(offsets2d, colors='k', origin='lower', linestyles='dashed')
    #cl = ax.clabel(cs, inline=True, fmt='%6.0f m')
    im = ax.imshow(phi.real,
                   vmin=-np.pi,
                   vmax=np.pi,
                   aspect='auto',
                   cmap=matplotlib.cm.bwr,
                   origin='lower')
    cb = fig.colorbar(im, orientation='horizontal', shrink=0.50)
    cb.set_label('Phase Error (radians)')
    ax.set_xlabel('Receiver')
    ax.set_ylabel('Source')

    canvas = FigureCanvas(fig)
    renderer = canvas.get_renderer()
    renderer.dpi = dpi
    canvas.draw()
    l, b, w, h = [int(item) for item in canvas.figure.bbox.bounds]
    im = Image.fromstring("RGB", (w, h), canvas.tostring_rgb())
    im = auto_crop(im)

    return im
コード例 #4
0
ファイル: geom.py プロジェクト: bsmithyman/waveserv
def geometry_render_xy (projnm):

  from pygeo.fullpy import readini
  inidict = readini(projnm + '.ini')

  # Get existing ky information
  srcs = inidict['srcs']
  recs = inidict['recs']
  geos = inidict['geos']

  fig = Figure(**figopts_geometry)

  axy = fig.add_subplot(1,1,1, aspect=1.0, adjustable='box')
  axy.yaxis.set_major_formatter(FormatStrFormatter('%+d'))

  if (srcs.shape != (0,)):
    axy.plot(srcs[:,0], srcs[:,1], 'r,', label='Sources')

  if (recs.shape != (0,)):
    axy.plot(recs[:,0], recs[:,1], 'g,', label='Hydrophones')

  if (geos.shape != (0,)):
    axy.plot(geos[:,0], geos[:,1], 'b,', label='Geophones')

  #axy.legend()
  axy.set_ylabel('Offline Coordinate (m)')
  axy.set_xlabel('Line Location (m)')
  axy.set_title('Plan View')

  #currentyaxis = axy.axis()
  #axy.axis((figextent[0], figextent[1], currentyaxis[2], currentyaxis[3]))

  canvas = FigureCanvas(fig)
  renderer = canvas.get_renderer()
  renderer.dpi = dpi
  canvas.draw()
  l,b,w,h = [int(item) for item in canvas.figure.bbox.bounds]
  im = Image.fromstring("RGB", (w,h), canvas.tostring_rgb())
  im = auto_crop(im)

  return im
コード例 #5
0
ファイル: cycleskip.py プロジェクト: bsmithyman/waveserv
def cycleskip_render (projnm, freq, obsfile, estfile):

  from pygeo.fullpy import readini
  inidict = readini(projnm + '.ini')

  srcs = inidict['srcs']
  recs = inidict['recs']

  offsets3d, offsets2d = offset_image(srcs, recs)

  reader = ftypes['utest']
  dobs = reader(obsfile)
  dest = reader(estfile)

  phi = np.angle(dest * dobs.conj())

  fig = Figure(**figopts_cycleskip)

  ax = fig.add_subplot(1,1,1)
  ax.set_title('Phase Error $\phi$ at %3.3f Hz'%(freq,))
  cs = ax.contour(offsets3d, colors='k', origin='lower')
  cl = ax.clabel(cs, inline=True, fmt='%6.0f m')
  cs = ax.contour(offsets2d, colors='k', origin='lower', linestyles='dashed')
  #cl = ax.clabel(cs, inline=True, fmt='%6.0f m')
  im = ax.imshow(phi.real, vmin=-np.pi, vmax=np.pi, aspect='auto', cmap=matplotlib.cm.bwr, origin='lower')
  cb = fig.colorbar(im, orientation='horizontal', shrink=0.50)
  cb.set_label('Phase Error (radians)')
  ax.set_xlabel('Receiver')
  ax.set_ylabel('Source')

  canvas = FigureCanvas(fig)
  renderer = canvas.get_renderer()
  renderer.dpi = dpi
  canvas.draw()
  l,b,w,h = [int(item) for item in canvas.figure.bbox.bounds]
  im = Image.fromstring("RGB", (w,h), canvas.tostring_rgb())
  im = auto_crop(im)

  return im
コード例 #6
0
ファイル: autopickfullwv.py プロジェクト: kmch/pygeo
    raise Exception('No input file provided!')

wlen = DEFAULT_WLEN

if len(sys.argv) >= 3:
    wlen = int(sys.argv[2])

shift = -wlen

if len(sys.argv) >= 4:
    shift = -int(sys.argv[3])

inifile = glob.glob('*.ini')[0]
projnm = inifile.split('.')[0]

ini = readini(inifile)

ns = ini['ns']
nr = ini['nr']

sf = SEGYFile(infile)
dt = sf.bhead['hdt'] * TUNIT
picks = (np.argmax(energyratio(sf[:], wlen), axis=1) + shift)
picks.shape = (ns, nr)

picks = picks * dt

with open('%s.picks'%(projnm,), 'w') as fp:
    fp.writelines(['%d %d %f\n'%(isrc+1, irec+1, picks[isrc, irec]) for isrc in xrange(ns) for irec in xrange(nr)])

コード例 #7
0
    globresult = glob.glob('*.ini')
    if (len(globresult) != 0):
        for gri in globresult:
            thisprojnm = gri[:-4]
            if (gopts['filename'].find(thisprojnm) == 0):
                gopts['projnm'] = thisprojnm
                gopts['inifile'] = gri
                if (options.verbose):
                    print('Found matching project file: %s' % (gri, ))
                break
    else:
        parser.error('This program requires a project *.ini file to function!')
except:
    parser.error('Something happened!')

ini = readini(gopts['inifile'])

extent = [
    ini['xorig'], ini['xorig'] + ini['dx'] * (ini['nx'] - 1),
    -(ini['zorig'] + ini['dz'] * (ini['nz'] - 1)), -ini['zorig']
]

srcs = ini['srcs']

sf = SEGYFile(gopts['filename'], endian='Big', verbose=options.verbose)
model = sf[:].T

fig = pl.figure()
ax = fig.add_subplot(1, 1, 1, aspect=1.0)
pl.imshow(model, extent=extent)
pl.plot(srcs[:, 0], -srcs[:, 2], 'w.')
コード例 #8
0
ファイル: psf.py プロジェクト: bsmithyman/waveserv
def dirichlet_render(projnm):

    from pygeo.fullpy import readini
    inidict = readini(projnm + '.ini')

    # Decide what the maximum y-difference is and scale accordingly
    itemlist = ['srcs', 'recs', 'geos']
    for item in itemlist:
        if (inidict[item].shape[0] == 0):
            itemlist.remove(item)

    ymax = max((inidict[item][:, 1].max() for item in itemlist))
    ymin = min((inidict[item][:, 1].min() for item in itemlist))
    ydiff = ymax - ymin

    # Get existing ky information
    kys = inidict['kys']
    method = inidict['method']
    nky = inidict['nky']
    vmin = inidict['vmin']
    freqs = inidict['freqs']

    # Define basis for plot
    y = np.linspace(0, def_ymax, def_samps)

    minomega = freqs.min()
    maxomega = freqs.max()

    fig = Figure(**figopts_dirichlet)
    fig.subplots_adjust(hspace=0.4)

    kysw = np.ones_like(kys) / nky
    ex = dirichlet_kernel(y, kys, kysw)
    lk1, gk1 = dirichlet_comparison(y, nky, vmin, minomega)
    lk2, gk2 = dirichlet_comparison(y, nky, vmin, maxomega)

    ax = fig.add_subplot(2, 1, 1)
    ax.plot(y, ex, 'r-', label='Current')
    ax.plot(y, lk1, 'b-', label='Linear')
    ax.plot(y, gk1, 'g-', label='Gauss-Legendre')
    ax.set_ylabel('Amplitude')
    ax.set_xlabel('Cross-line Distance (m)')
    ax.set_title('Minimum $\omega$: %f' % (minomega, ))
    ax.legend()

    ax = fig.add_subplot(2, 1, 2)
    ax.plot(y, ex, 'r-', label='Current')
    ax.plot(y, lk2, 'b-', label='Linear')
    ax.plot(y, gk2, 'g-', label='Gauss-Legendre')
    ax.set_ylabel('Amplitude')
    ax.set_xlabel('Cross-line Distance (m)')
    ax.set_title('Maximum $\omega$: %f' % (maxomega, ))
    ax.legend()

    canvas = FigureCanvas(fig)
    renderer = canvas.get_renderer()
    renderer.dpi = dpi
    canvas.draw()
    l, b, w, h = [int(item) for item in canvas.figure.bbox.bounds]
    im = Image.fromstring("RGB", (w, h), canvas.tostring_rgb())
    im = auto_crop(im)

    return im
コード例 #9
0
ファイル: modelstats.py プロジェクト: bsmithyman/pygeo
    globresult = glob.glob("*.ini")
    if len(globresult) != 0:
        for gri in globresult:
            thisprojnm = gri[:-4]
            if gopts["filename"].find(thisprojnm) == 0:
                gopts["projnm"] = thisprojnm
                gopts["inifile"] = gri
                if options.verbose:
                    print("Found matching project file: %s" % (gri,))
                break
    else:
        parser.error("This program requires a project *.ini file to function!")
except:
    parser.error("Something happened!")

ini = readini(gopts["inifile"])

extent = [
    ini["xorig"],
    ini["xorig"] + ini["dx"] * (ini["nx"] - 1),
    -(ini["zorig"] + ini["dz"] * (ini["nz"] - 1)),
    -ini["zorig"],
]

srcs = ini["srcs"]

sf = SEGYFile(gopts["filename"], endian="Big", verbose=options.verbose)
model = sf[:].T

fig = pl.figure()
ax = fig.add_subplot(1, 1, 1, aspect=1.0)
コード例 #10
0
ファイル: dirichlet.py プロジェクト: kmch/pygeo
			nky		= None,
)

(options, args) = parser.parse_args()

if (len(args) == 0):
  globresult = glob.glob('*.ini')
  if (len(globresult) == 1):
    projnm = os.path.splitext(globresult[0])[0]
  else:
    parser.error('Please specify a project name!')
else:
  projnm = args[0]

try:
  inidict = readini(projnm + '.ini')
except:
  parser.error('Project ini file %s.ini does not exist!'%(projnm,))

# Decide what the maximum y-difference is and scale accordingly
itemlist = ['srcs','recs','geos']
for item in itemlist:
  if (inidict[item].shape[0] == 0):
    itemlist.remove(item)
  
ymax = max((inidict[item][:,1].max() for item in itemlist))
ymin = min((inidict[item][:,1].min() for item in itemlist))
ydiff = ymax - ymin

# Get existing ky information
kys = inidict['kys']
コード例 #11
0
ファイル: psf.py プロジェクト: bsmithyman/waveserv
def dirichlet_render(projnm):

    from pygeo.fullpy import readini

    inidict = readini(projnm + ".ini")

    # Decide what the maximum y-difference is and scale accordingly
    itemlist = ["srcs", "recs", "geos"]
    for item in itemlist:
        if inidict[item].shape[0] == 0:
            itemlist.remove(item)

    ymax = max((inidict[item][:, 1].max() for item in itemlist))
    ymin = min((inidict[item][:, 1].min() for item in itemlist))
    ydiff = ymax - ymin

    # Get existing ky information
    kys = inidict["kys"]
    method = inidict["method"]
    nky = inidict["nky"]
    vmin = inidict["vmin"]
    freqs = inidict["freqs"]

    # Define basis for plot
    y = np.linspace(0, def_ymax, def_samps)

    minomega = freqs.min()
    maxomega = freqs.max()

    fig = Figure(**figopts_dirichlet)
    fig.subplots_adjust(hspace=0.4)

    kysw = np.ones_like(kys) / nky
    ex = dirichlet_kernel(y, kys, kysw)
    lk1, gk1 = dirichlet_comparison(y, nky, vmin, minomega)
    lk2, gk2 = dirichlet_comparison(y, nky, vmin, maxomega)

    ax = fig.add_subplot(2, 1, 1)
    ax.plot(y, ex, "r-", label="Current")
    ax.plot(y, lk1, "b-", label="Linear")
    ax.plot(y, gk1, "g-", label="Gauss-Legendre")
    ax.set_ylabel("Amplitude")
    ax.set_xlabel("Cross-line Distance (m)")
    ax.set_title("Minimum $\omega$: %f" % (minomega,))
    ax.legend()

    ax = fig.add_subplot(2, 1, 2)
    ax.plot(y, ex, "r-", label="Current")
    ax.plot(y, lk2, "b-", label="Linear")
    ax.plot(y, gk2, "g-", label="Gauss-Legendre")
    ax.set_ylabel("Amplitude")
    ax.set_xlabel("Cross-line Distance (m)")
    ax.set_title("Maximum $\omega$: %f" % (maxomega,))
    ax.legend()

    canvas = FigureCanvas(fig)
    renderer = canvas.get_renderer()
    renderer.dpi = dpi
    canvas.draw()
    l, b, w, h = [int(item) for item in canvas.figure.bbox.bounds]
    im = Image.fromstring("RGB", (w, h), canvas.tostring_rgb())
    im = auto_crop(im)

    return im