#!/usr/bin/env python # coding: utf-8 # **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](http://www.uerj.br/). # All content can be freely used and adapted under the terms of the # [Creative Commons Attribution 4.0 International License](http://creativecommons.org/licenses/by/4.0/). # # ![Creative Commons License](https://i.creativecommons.org/l/by/4.0/88x31.png) # Esse documento que você está usando é um [Jupyter notebook](http://jupyter.org/). É 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). # # Prática 5 - Gravimetria - Modelagem direta 2D para testar hipóteses # ## Objetivos # # * Aprender como testar uma hipótese geológica com dados geofísicos. # * Entender o que é e qual é o objetivo da modelagem direta. # * Ilustrar a importância de testes com dados sintéticos. # * Aprender na prática o significado de falta de unicidade. # ## Instruções # # 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](http://python.org/). 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. # ## Preparação # # 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](http://www.fatiando.org). # In[ ]: from __future__ import division from fatiando.gravmag.interactive import Moulder import fatiando import seaborn import numpy as np # In[ ]: print('Versão do Fatiando a Terra: {}'.format(fatiando.__version__)) # ## Simulando a Terra: dados sintéticos # # 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)!** # # 1. Execute a célula abaixo para abrir uma janela para modelagem direta. # 2. Crie um modelo com **1 corpo** utilizando a densidade que quiser. # 3. Experimente diferentes configurações e veja como o dado sintético muda. # 4. Coloque **0.1 mGal** de erro aleatório no dado. Veja como o erro influencia o dado. # 5. Quando terminar, feche a janela. Não se preocupe, seu modelo estará salvo. # In[ ]: 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. # In[ ]: modelo1.save('modelo1-blablabla.pkl') modelo1.save_predicted('modelo1-dados-blablabla.txt') # ### Para pensar # # * O que é dado que você gerou? É o distúrbio, Bouguer, nenhum dos dois, ambos? # * O que representa o valor de densidade que vocês colocaram? É um contraste? Se for, é um contraste entre o que? # ## Modelagem direta: testando uma hipótese sobre o dado dos colegas # # 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**. # # 0. Copie e cole os arquivos `.txt` e `.pkl` do outro grupo para a **pasta onde está o notebook**. # 1. **Mude os nomes dos arquivos** na célula abaixo (coisas entre `''`) para os do outro grupo. # 2. Rode a célula abaixo para carregar os dados e abrir a janela de modelagem. # 3. Faça um modelo com **1 corpo** que ajuste o dado do colega. # 4. Feche a janela quando terminar (não se preocupe, tudo estará salvo). # In[ ]: 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. # In[ ]: modelagem1.plot() # Vamos comparar agora o seu modelo com "a realidade" criada pelo colega. Rode a célula abaixo para plotar "a realidade". # In[ ]: Moulder.load(modelo_colega).plot() # ### Para pensar # # * Você chegou perto do verdadeiro (sem colar)? Por que? # * O seu modelo é uma solução válida do ponto de vista **geofísico**, ou seja, perante os dados e informações que você possuía? # * O que seria necessário para produzir um modelo que se aproxime mais da realidade? # ## Informação a priori: chegando mais próximo da realidade # # 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. # # #