Course website: http://www.leouieda.com/geofisica1
Note: This notebook is part of the course "Geofísica 1" of Geology program of the Universidade do Estado do Rio de Janeiro. All content can be freely used and adapted under the terms of the Creative Commons Attribution 4.0 International License.
Esse documento que você está usando é um Jupyter notebook. É um documento interativo que mistura texto (como esse), código (como abaixo), e o resultado de executar o código (números, texto, figuras, videos, etc).
O notebook te fornecerá exemplos interativos que trabalham os temas abordados no questionário. Utilize esses exemplos para responder as perguntas.
As células com números ao lado, como In [1]:
, são código Python. Algumas dessas células não produzem resultado e servem de preparação para os exemplos interativos. Outras, produzem gráficos interativos. Você deve executar todas as células, uma de cada vez, mesmo as que não produzem gráficos.
Para executar uma célula, clique em cima dela e aperte Shift + Enter
. O foco (contorno verde ou cinza em torno da célula) deverá passar para a célula abaixo. Para rodá-la, aperte Shift + Enter
novamente e assim por diante. Você pode executar células de texto que não acontecerá nada.
Exectute as células abaixo para carregar as componentes necessárias para nossa prática. Vamos utilizar várias bibliotecas, inclusive uma de geofísica chamada Fatiando a Terra.
from __future__ import division
from fatiando.gravmag.interactive import Moulder
import fatiando
import seaborn
import numpy as np
print('Versão do Fatiando a Terra: {}'.format(fatiando.__version__))
A primeira parte dessa prática será "brincar de Deus". Vamos criar uma "Terra" nossa e usar essa Terra para gerar dados. Esses dados fabricados são geralmente chamados de sintéticos. Depois de criar os dados sintéticos, os grupos vão trocar de dados para tentar descobrir o modelo que os colegas fizeram. Não deixe os outros grupos verem o que estão desenhando (e não colem)!
area = (0, 50e3, 0, 20e3)
x = np.linspace(area[0], area[1], 150)
z = np.zeros_like(x)
modelo1 = Moulder(area, x, z)
modelo1.run()
Rode a célula abaixo para salvar o seu modelo e os dados gerados. Mude os nomes dos arquivos abaixo (troque o blablabla
por outra coisa) para poder identificar seu modelo depois.
modelo1.save('modelo1-blablabla.pkl')
modelo1.save_predicted('modelo1-dados-blablabla.txt')
Pegue o arquivo de dados (modelo1-blablabla.txt
) e o arquivo de modelo (modelo1-blablabla.pkl
) de outro grupo.
Dessa vez, a única informação "geológica" que você tem é que o dado é produzido por 1 único corpo.
.txt
e .pkl
do outro grupo para a pasta onde está o notebook.''
) para os do outro grupo.dados_colega = 'modelo1-dados-blablabla.txt'
modelo_colega = 'modelo1-blablabla.pkl'
x, z, dados = np.loadtxt(dados_colega, unpack=True)
modelagem1 = Moulder(area, x, z, data=dados)
modelagem1.run()
Rode a célula abaixo para inserir uma imagem do seu modelo aqui no notebook.
modelagem1.plot()
Vamos comparar agora o seu modelo com "a realidade" criada pelo colega. Rode a célula abaixo para plotar "a realidade".
Moulder.load(modelo_colega).plot()
O problema anterior foi de sacanagem. Não há como gerar um modelo que reproduza a realidade somente com os dados geofísicos. Como você viu, existem infinitos modelos que produzem o mesmo dado. O que diferencia um possível modelo e outro é o conhecimento geológico e geofísico do intérprete (ou seja, você). Por isso que conhecimento prévio (a priori) sobre a geologia da região e possíveis soluções é crucial.
Para ilustrar isso vamos fazer outra modelagem com dados sintéticos. Mas dessa vez teremos mais informações geológicas. Vocês informarão os colegas qual que tipo de corpo geológico gerou a anomalia e qual é o contraste de densidade correto. Em situações reais, dificilmente fazemos um levantamento geofísico em uma área onde o conhecimento da geologia é zero. Sabemos que tem intrusões nessa região, que ali é uma bacia sedimentar, etc.
Vamos simular uma intrusão ígnea:
area = (0, 10e3, 0, 5e3)
x = np.linspace(area[0], area[1], 150)
z = np.zeros_like(x)
modelo_ignea = Moulder(area, x, z)
modelo_ignea.run()
Rode a célula abaixo para salvar o seu modelo e os dados gerados. Mude os nomes dos arquivos abaixo (troque o blablabla
por outra coisa) para poder identificar seu modelo depois.
modelo_ignea.save('modelo-ignea-blablabla.pkl')
modelo_ignea.save_predicted('modelo-ignea-dados-blablabla.txt')
Troque os arquivos de dados e modelo com outro grupo.
Vamos tentar a modelagem novamente. Dessa vez, sabemos que a anomalia é causada por uma intrusão (batólito, dique, soleira, etc). Também sabemos a densidade correta (pergunte para o grupo que cedeu os dados).
dado_colega_intrusao = 'modelo-ignea-dados-blablabla.txt'
modelo_colega_intrusao = 'modelo-ignea-blablabla.pkl'
x, z, dado = np.loadtxt(dado_colega_intrusao, unpack=True)
modelagem_ignea = Moulder(area, x, z, data=dado)
modelagem_ignea.run()
Vamos ver como foi dessa vez. Rode as duas células abaixo para produzir 2 gráficos: primeiro o seu modelo e depois o verdadeiro (do outro grupo).
modelagem_ignea.plot()
Moulder.load(modelo_colega_intrusao).plot()