sac-format 0.6.0 C++20 SAC (Seismic Analysis Code) File Library |
sac-format is a single-header statically linked library designed to make working with binary SAC-files as easy as possible. Written in C++20, it follows a modern and easy to read programming-style while providing the high performance brought by C++.
sac-format's developed on GitHub!
Download sac-format from the GitHub release page.
Download an offline version of the documentation (PDF).
Get help from the community forum.
sac-format is Free and Open Source Software (FOSS) released under the MIT license. Anyone can use it, for any purpose (including proprietary software), anywhere in the world. sac-format is operating system agnostic and confirmed working on Windows, macOS, and Linux systems.
sac-format is safe it conforms to a strict set of C++ programming guidelines, chosen to ensure safe code-execution. The guideline conformance list is in cpp-linter.yml
and can be cross-referenced against this master list. Results of conformance checking are here.
Testing is an important part of software development; the sac-format library is extensively tested using the Catch2 testing framework. Everything from low-level binary conversions to high-level Trace
reading/writing are tested and confirmed working. Check and run the tests yourself. See the Testing section for more information.
sac-format is fast it's written in C++, carefully optimized, and extensively benchmarked. You can run the benchmarks yourself to find out how sac-format performs on your system. See the Benchmarking section for more information.
sac-format is easy single-header makes integration in any project simple. Installation is easy with our automatic installers. Building is a breeze with CMake, even on different platforms. Object-oriented design makes use easy and intuitive. See the Quickstart section to get up and running.
sac-format is small in total (header + implementation; excluding comments) the library is under 2100∗ lines of code. Small size opens the door to using on any sort of hardware (old or new) and makes it easy to expand upon.
∗ This value includes only the library, excluding all testing/benchmarking and example codes. Including utests.cpp
, benchmark.cpp
, util.hpp
, the example program (list_sac
), and sac-format totals just over 5100 lines of code.
sac-format is extensively documented both online and in the code. Nothing's hidden, nothing's obscured. Curious how something works? Check the documentation and in-code comments.
sac-format is transparent all analysis and coverage information is publicly available online.
sac-format includes the Trace
class for seismic traces, providing high-level object-oriented abstraction to seismic data. With the Trace
class, you don't need to worry about manually reading SAC-files word-by-word. It's compatible with v6
and v7
SAC-files and can automatically detect the version upon reading. File output defaults to v7
SAC-files and there is a legacy_write
function for v6
output.
If you want to roll your own SAC-file processing workflow you can use the low-level I/O functionality built into sac-format. All functions tested and confirmed working they're used to build the Trace
class!