from fatiando.potential import basin2d
from fatiando.inversion import gradient
from fatiando.mesher.dd import Polygon
from fatiando import vis

area = (0, 100000, 0, 5000)
xp = numpy.arange(0, 100000, 1000)
zp = numpy.zeros_like(xp)
nodes = [[20000, 1], [80000, 1]]
app = BasinTrap(area, nodes, xp, zp)
app.run()
gz = app.get_data()
dens = app.densities[0]
model = Polygon(1000 * numpy.array(app.polygons[0]))
dm = basin2d.TrapezoidalGzDM(xp, zp, gz, prop=dens, verts=nodes)
solver = gradient.levmarq(initial=(2500, 2500))
p, residuals = basin2d.trapezoidal([dm], solver)
estimate = Polygon(
    [nodes[0], nodes[1], [nodes[1][0], p[0]], [nodes[0][0], p[1]]])

pyplot.figure()
pyplot.subplot(2, 1, 1)
pyplot.title("Anomalia de gravidade")
pyplot.plot(xp, gz, 'ok', label='Observada')
pyplot.plot(xp, gz - residuals[0], '-r', linewidth=2, label='Predita')
leg = pyplot.legend(loc='lower left', numpoints=1)
leg.get_frame().set_alpha(0.5)
pyplot.ylabel("mGal")
pyplot.xlim(0, 100000)
pyplot.subplot(2, 1, 2)
vis.map.polygon(estimate,
Example #2
0
from matplotlib import pyplot
import numpy
from fatiando.heat import climatesignal
from fatiando.inversion.gradient import levmarq
from fatiando import vis, utils

params = __import__('exercicio3e4_entrada')
zp = numpy.arange(0, 100, 1)
temp, error = utils.contaminate(climatesignal.linear(params.amplitude,
                                                     params.idade, zp),
                                params.ruido,
                                percent=True,
                                return_stddev=True)
solver = levmarq(initial=params.inicial)
p, residuals = climatesignal.invert_linear(temp, zp, solver)
est_amp, est_age = p

pyplot.figure(figsize=(12, 5))
pyplot.subplot(1, 2, 1)
pyplot.title("Sinal climatico")
pyplot.plot(temp, zp, 'ok', label='Observado')
pyplot.plot(temp - residuals, zp, '--r', linewidth=3, label='Predito')
pyplot.legend(loc='lower right', numpoints=1)
pyplot.xlabel("Temperatura (C)")
pyplot.ylabel("Z")
pyplot.ylim(100, 0)
ax = pyplot.subplot(1, 2, 2)
ax2 = pyplot.twinx()
pyplot.title("Idade e amplitude")
width = 0.3
ax.bar([1 - width], [params.idade], width, color='b', label="Verdadeiro")
Example #3
0
from fatiando.potential import basin2d
from fatiando.inversion import gradient
from fatiando.mesher.dd import Polygon
from fatiando import vis

area = (0, 100000, 0, 5000)
with open('exercicio5e6.pickle') as f:
    data = pickle.load(f)
    xp = data['xp']
    zp = data['zp']
    nodes = data['nodes'][0]
    gz = data['gz']
    dens = data['density']
model = Polygon(nodes)
dm = basin2d.TriangularGzDM(xp, zp, gz, prop=dens, verts=nodes[0:2])
solver = gradient.levmarq(initial=(2500, 2500))
p, residuals = basin2d.triangular([dm], solver)
estimate = Polygon([nodes[0], nodes[1], p])

pyplot.figure()
pyplot.subplot(2, 1, 1)
pyplot.title("Anomalia de gravidade")
pyplot.plot(xp, gz, 'ok', label='Observada')
pyplot.plot(xp, gz - residuals[0], '-r', linewidth=2, label='Predita')
leg = pyplot.legend(loc='lower left', numpoints=1)
leg.get_frame().set_alpha(0.5)
pyplot.ylabel("mGal")
pyplot.xlim(0, 100000)
pyplot.subplot(2, 1, 2)
vis.map.polygon(estimate, 'o-r', linewidth=2, fill='r', alpha=0.3,
                label='Estimado')
Example #4
0
from matplotlib import pyplot
import numpy
import cPickle as pickle
from fatiando.heat import climatesignal
from fatiando.inversion.gradient import levmarq
from fatiando import vis, utils

params = __import__('exercicio5_entrada')
with open('exercicio5.pickle') as f:
    zp, temp = pickle.load(f)
solver = levmarq(initial=params.inicial)
p, resabr = climatesignal.invert_abrupt(temp, zp, solver)
ampabr, ageabr = p
solver = levmarq(initial=params.inicial)
p, reslin = climatesignal.invert_linear(temp, zp, solver)
amplin, agelin = p

pyplot.figure(figsize=(12,5))
pyplot.subplot(1, 2, 1)
pyplot.title("Sinal climatico")
pyplot.plot(temp, zp, 'ok', label='Observado')
pyplot.plot(temp - reslin, zp, '-b', linewidth=3, label='Linear')
pyplot.plot(temp - resabr, zp, '-r', linewidth=3, label='Abrupto')
pyplot.legend(loc='lower right', numpoints=1)
pyplot.xlabel("Temperatura (C)")
pyplot.ylabel("Z")
pyplot.ylim(110, 10)
ax = pyplot.subplot(1, 2, 2)
ax2 = pyplot.twinx()
pyplot.title("Idade e amplitude")
width = 0.3
from fatiando.seismic import profile
from fatiando.inversion import gradient
from fatiando import vis, utils, ui
import cPickle as pickle

params = __import__('exercicio4_entrada')
with open(params.dados) as f:
    zp, tts, thickness, velocity = pickle.load(f)
mu = params.variacao_total
beta = params.beta
area = (0, 10000, 0, 600)
vmin, vmax, zmin, zmax = area

thick = float(sum(thickness)) / float(params.camadas)
model = params.camadas * [thick]
solver = gradient.levmarq(initial=0.000001 * numpy.ones(len(model)))
p, residuals = profile.invert_vertical(tts,
                                       zp,
                                       model,
                                       solver,
                                       sharp=mu,
                                       beta=beta)

pyplot.figure(figsize=(12, 5))
pyplot.subplot(1, 2, 1)
pyplot.grid()
pyplot.title("Perfilagem sismica vertical")
pyplot.plot(tts, zp, 'ok', label='Observado')
pyplot.plot(tts - residuals, zp, '-r', label='Predito')
leg = pyplot.legend(loc='lower left', numpoints=1)
leg.get_frame().set_alpha(0.5)
Example #6
0
from fatiando.seismic import profile
from fatiando.inversion import gradient
from fatiando import vis, utils, ui
import cPickle as pickle

params = __import__('exercicio4_entrada')
with open(params.dados) as f:
    zp, tts, thickness, velocity = pickle.load(f)
mu = params.variacao_total
beta = params.beta
area = (0, 10000, 0, 600)
vmin, vmax, zmin, zmax = area

thick = float(sum(thickness))/float(params.camadas)
model = params.camadas*[thick]
solver = gradient.levmarq(initial=0.000001*numpy.ones(len(model)))
p, residuals = profile.invert_vertical(tts, zp, model, solver, sharp=mu, beta=beta)

pyplot.figure(figsize=(12,5))
pyplot.subplot(1, 2, 1)
pyplot.grid()
pyplot.title("Perfilagem sismica vertical")
pyplot.plot(tts, zp, 'ok', label='Observado')
pyplot.plot(tts - residuals, zp, '-r', label='Predito')
leg = pyplot.legend(loc='lower left', numpoints=1)
leg.get_frame().set_alpha(0.5)
pyplot.xlabel("Tempo de chegada (s)")
pyplot.ylabel("Profundidade (m)")
pyplot.ylim(sum(thickness), 0)
pyplot.subplot(1, 2, 2)
pyplot.grid()