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).
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-
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. - macOS/Linux:
-
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 -
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.
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()
}From the Timekeepers.jl folder, start Julia with julia --project=. -t auto,
then:
using Timekeepers
run_tkapp() # open the explorer windowOr, without starting Julia yourself, run the launcher scripts in examples/:
julia --project=. -t auto examples/tkapp.jlFor 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.jlWithout 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)https://JuliaGeophysics.github.io/Timekeepers.jl/dev
We accept issues and pull requests. Refer to CONTRIBUTING.md.


