Skip to content

About

Timeseries analysis for electromagnetic geophysics

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

27 Commits

Folders and files

Repository files navigation

Timekeepers.jl

Timeseries analysis in Electromagnetic Geophysics

Dev CI License: MIT

Timekeepers reads LEMI-424, GEOMAG-02 and Metronix ADU recordings into TimeSeries.jl TimeArrays. It also writes each of these formats. It has three windows:

  • TKDash, a survey dashboard to select base and remote sites;
  • TKApp, a GLMakie window to examine, mask and clean long records;
  • TKProc, a window to estimate transfer functions (experimental).

TKDash showing the sites of a survey on a map TKApp showing a five-channel Metronix record TKProc showing the apparent resistivity, phase and tipper of a site

Installation

Timekeepers needs Julia 1.12 or newer, and is not registered yet. If you already have Julia and your own project, add it from GitHub:

pkg> add https://github.com/JuliaGeophysics/Timekeepers.jl

No Julia yet?

  1. Install Julia with juliaup, the official installer:

    • macOS/Linux: curl -fsSL https://install.julialang.org | sh
    • Windows: winget install --name Julia --id 9NJNWW8PVKMN -e -s msstore

    Open a new terminal and check it with julia --version.

  2. Clone this repository (or download it as a ZIP from the Code button on GitHub and unzip it):

    git clone https://github.com/JuliaGeophysics/Timekeepers.jl
    cd Timekeepers.jl
  3. Install its packages:

    julia --project=. -t auto -e "using Pkg; Pkg.instantiate()"

    This downloads and compiles everything Timekeepers needs, mostly graphics. It takes a few minutes, only the first time.

TKApp, TKDash and TKProc open windows, so they need a desktop session with OpenGL 3.3 or newer. The readers and writers operate without a display.

The full walkthrough, with more detail for a first-time Julia user, is in Getting Started.

Desktop shortcuts for a field laptop (Windows)

For a laptop that will not have internet access later (e.g. in the field), run this once while online. It builds a sysimage (so a window opens in seconds, not minutes) and puts three Desktop shortcuts on it: tkapp.lnk, tkdash.lnk and tkproc.lnk. Set $root to the Timekeepers.jl folder, save the rest as build.ps1, and run powershell -ExecutionPolicy Bypass -File build.ps1.

$root = "D:\path\to\Timekeepers.jl"
julia --project=@sysimage_tmp -e "using Pkg; Pkg.add(`"PackageCompiler`"); Pkg.develop(path=`"$root`"); using PackageCompiler; create_sysimage([`"Timekeepers`"]; sysimage_path=`"$root\Timekeepers.dll`")"
$julia = (Get-Command julia).Source
$shell = New-Object -ComObject WScript.Shell
foreach ($app in "tkapp", "tkdash", "tkproc") {
    $lnk = $shell.CreateShortcut("$([Environment]::GetFolderPath('Desktop'))\$app.lnk")
    $lnk.TargetPath = $julia
    $lnk.Arguments = "--sysimage `"$root\Timekeepers.dll`" --project=`"$root`" -t auto `"$root\examples\$app.jl`""
    $lnk.WorkingDirectory = $root
    $lnk.IconLocation = $julia
    $lnk.Save()
}

Quick start

From the Timekeepers.jl folder, start Julia with julia --project=. -t auto, then:

using Timekeepers
run_tkapp()                                   # open the explorer window

Or, without starting Julia yourself, run the launcher scripts in examples/:

julia --project=. -t auto examples/tkapp.jl

For a full survey, TKDash shows when each site recorded. For the site that you select, it shows the base sites (they recorded with it, near it) and the remote sites (they recorded with it, far from it). It exports these sites for each site:

run_tkdash()                                  # or: julia --project=. examples/tkdash.jl

Without a path, run_tkdash() opens a folder dialog that asks for the survey directory; give it a path (run_tkdash("path/to/survey")) to skip the dialog.

You can also use code:

using Timekeepers, Dates

ta   = load_lemi424("data/LEMI090.txt")
mask = TimekeeperMask(ta)
mask_interval!(mask, DateTime(2020, 10, 4, 0, 10), DateTime(2020, 10, 4, 0, 20))

write_lemi424("data/LEMI090_clean.txt", cleaned_timearray(ta, mask))
write_mask("data/LEMI090_mask.csv", mask)

Documentation

https://JuliaGeophysics.github.io/Timekeepers.jl/dev

Contributing

We accept issues and pull requests. Refer to CONTRIBUTING.md.

About

Timeseries analysis for electromagnetic geophysics

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages