Coder Social home page Coder Social logo

geoscienceaustralia / hiqga.jl Goto Github PK

View Code? Open in Web Editor NEW
33.0 4.0 5.0 63.88 MB

High Quality Geophysical Analysis provides a general purpose Bayesian and deterministic inversion framework for various geophysical methods and spatially distributed / timeseries data

License: MIT License

Julia 100.00%
geophysics bayesian-inference gauss-newton non-linear-regression aem csem magnetotellurics images gaussian-processes trans-dimensional

hiqga.jl's Introduction

HiQGA.jl

CI status

This is a general purpose package for spatial statistical inference, geophysical forward modeling, Bayesian inference and inversion (both deterministic and probabilistic).

Readily usable geophysical forward operators are for AEM, CSEM and MT physics (references underneath), for which the time domain AEM codes are fairly production-ready. We've added SMR physics too! The current EM modeling is in 1D, but the inversion framework is dimensionally agnostic (e.g., you can regress images). Adding your own geophysical operators is easy!

Installation

To install the latest stable release, in a perfect world we'd use Julia's Pkg REPL by hitting ] to enter pkg> mode. Then enter the following, at the pkg> prompt:

pkg> add HiQGA

For the latest development version on here, you'd want to then do

pkg> dev HiQGA

Docs

References, detailed instructions for installation, running examples and setting your environment on a cluster are โ˜ž

Example AEM inversion

hiqga.jl's People

Contributors

a2ray avatar neil-symington avatar nmoghaddam avatar richardt94 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

hiqga.jl's Issues

Discussion on capturing required functionalities within package

Following an early discussion with Yusen, I captured a few items as follows that it is better to be discussed in a meeting.

  • Having the read_survey_file function as a more generic function that deals with any type of input dataset. May be similar approach in our previously developed scripts could be adopted here, i.e. *.stm file that basically extracts important information from input data to feed into inversion code. In this way, we can handle both SkyTEM, Tempest etc. in a harmonised approach.
  • As an open-source code, the analyst/developer might need to add/change a few components of the function. The current version is structured in a way that it is a bit difficult to navigate to where a particular function is located.
  • Two plots as shown here are not representative enough. For instance, the high altitude noise for HM and LM is better to be displayed in a graph way rather than what the left panels show. Having observed and modelled data to better understand the misfit definitely helps.
    Figure_1
    Figure_5_occ

Delauny outputs from HiQGA

Would like to implement a Delaunay triangulation from point clouds, and visualise this within ParaView as a VTK.

structs for scripts with functions

Instead of re-running scripts for plotting, load them through a struct

  • Will require minimal addition through multiple dispatch of functions to accept structs,
  • dispatch can be used to call the old functions with arguments and keywords.
  • Can use serialize / deserialze? See here

Vertical exaggeration calculation

  • make a function to calculate vertical exaggeration for 2D plots
  • add it to Tempest prob, SkyTEM prob and SkyTEM deterministic inv 2D sections

Refactor common names for functions

no nuisance:
summaryAEMimages, plotindividualAEMsoundings
and
with nuisance
summaryimages, plotindividualsoundings
just like
loopacrossAEMsoundings
the number of inputs is usually different so we can get away with a definition in AbstractOperator.jl and an import in the relevant modules, followed by an export in those or in AbstractOperator itself.

may be a breaking change, can be fixed with an oldname=newname

[Bug] constructor for `OptionsNuisance` modifies its own arguments

The function here takes an array argument sdev which is then bound to a new OptionsNuisance struct. On this line the array is modified in-place (because it is supposed to represent the width of the proposal distribution as a proportion of the prior bounds on a nuisance). Because array arguments in Julia are passed by reference, this means that the sdev array which is passed to the constructor function is silently changed by the function - this is an issue if, for example, an inversion is being performed with the same sdev parameters for a number of separate soundings/datasets as those parameters will be silently modified every time an inversion is initialised.

Read ASEG-GDF description file

Generate hdr file like GA-AEM produces which looks like

1   fiducial
2   line
3   flight
4   datetime
5   date
6   utc_time
.
.
.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.