Timeseries data

One of the complexities of magnetotelluric data processing is the various different data formats that exist. Resistics tries to simplify this complexity and offer inter-operability of the various data formats. Examples are given in the following sections of reading, writing and viewing timeseries data of varying formats.


Resistics currently supports five data formats for reading:

Each of these data formats has its own peculiarities, outlined in the individual sections. Resistics aims to give users a consistent output through the TimeReader class. All data readers can return either unscaled or physically scaled samples. Whilst the meaning of unscaled samples differs from format to format, when requesting physical samples from a data reader, the data is returned in the following units:

  • Electric channels Ex, Ey are in mV/km

  • Magnetic channels Hx, Hy and Hz are in mV


Time data folders must have one of the following in their name to be found when using the project environment.

  • meas

  • run

  • phnx


Writing out of timeseries is supported in resistics in for ASCII and internal formats.

The reason for supporting an internal binary format is two-fold. Firstly, it is based on numpy save, which allows easy reading and portability outside of the resistics environment as long as there is access to Python and numpy. Secondly, the headers are all in ASCII format, which makes it easier to read the various recording metadata in comparison to binary formatted header information.


ASCII data files will be significantly larger than binary ones. ASCII is best for portability if the data needs to be used elsewhere outside of Python, but the internal format can easily be read in using Python’s numpy package.

Interpolating to the second


For best results with resistics, timeseries data should be sampled on the second. This is not true for all timeseries formats, for example, SPAM data can be sampled off the second. Resistics includes an interpolation to second function to deal with this issue. Please read this for more information.

Data which is not sampled on the second should be interpolated on the second to ensure best results. This can be achieved using inbuilt functionality.

For an example of a dataset not sampled on the second, consider recording at 10 Hz, with the first sample at 0.05 seconds. Then the sample times will be:

0.05 0.15 0.25 0.35 0.45 0.55 0.65 0.75 0.85 0.95 1.05 1.15 1.25 ...

Interpolating to the second will change the sample times to:

0.10 0.20 0.30 0.40 0.50 0.60 0.70 0.80 0.90 1.00 1.10 1.20 ...

Whenever operating with multiple different file formats in one project, it is best practice to ensure that all datasets are sampled on the second prior to estimating impedance tensors.