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
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))
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
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
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
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)])
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.')
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
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)
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']
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