ProcMT main GUI

Basic application video:

(click video to full screen)

Tab dirs

drag & drop the toplevel directory on “survey base dir” or use the select button

For emap, local & center and remote reference prefer the select button, which open sites belonging to this “survey base dir”.

Tab settings

cut upper f, cut lower f

Determins the usable part of the FFT.
If too small less frequencies for each band will be used; overlapping bewteen bands is reduced

ProcMT preference

smooth takes in general shorter FFTs and bigger parzening

medium takes most common settings

sharp takes longer FFTs and smaller parzening

auto bandwidth, auto Parzen

You can tune the “ProcMT preference” by changing these values.
I happens that - for example “sharp” is selected, a bigger parzen radius gives the desired result

skip marked parts

If a selection in the timerseries has been made, respect this and exclude these parts from beeing read.

Tab MT


  • calculate Z tensor

  • perform a quadrant check

  • check the coherency

  • range check by median of rho and phi for xy, yx

  • statistical evaluation of the selected data

  • if “stddev limit active”, take all values with standard deviation less than “x std dev”

  • if stddev limit active AND stddev auto is active, take all values with standard deviation less than and iterative lower the limit to “x std dev min”; breaks if less than 32 stacks automatically

  • again a final statistical evaluation of the selected data follows

quadrant check

In most cases you expect the relation that real and imaginary part of Zxy (Ex, Hy) are positive and Zyx (Ey, Hx) are negative. There may be complex 3D cases where this is not the case. So this option is not “fail safe”.
However in the spectral editor you can look at this distribution. Normally if Zxy is mostly positive the negative elements represent outliers which appear as “wrong phase”. If checked negative Zxy will be treated as outliers. This tensor will be removed from the statistics.

ProcMT RR with an AMT Site

Especially when using the MFS-06e coils you can enhance the data above 1 kHz by doing remote referencing (RR) with a station nearby.
Here the dominating effect is the self noise reduction by using Hx*Hxrinstead of Hx*Hxand so on (so cross spectra instead of auto spectra)

RR with AMT Site:

(click video to full screen)

ProcMT Join AMT RR Site and MT Site

This procedure applies for any type of processing; you can merge / edit / delete any combination. In the later case we mix the LF part of and EDI with the HF part (processed with RR)

RR AMT and MT Site:

(click video to full screen)

ProcMT Export to SQLite, Matlab, Octave, R and Python

All the above programming languages can read SQL databases, including the SQLite database.
ProcMT can write and read SQLite files. File size is around 20 x smaller compared to single ASCII files and all is together in one file.

So if you focus on mathematics only, your Matlab experiments may be included in our processing if you find it valuable.

ProcMT spectra export and import:

(click video to full screen)


get calibration

Fetch a coil from the database for plotting


You may want to create your output directory first, like allcoils and click that directory.
Give a name like coils.sql3
You will be prompted for an output directory - cal2sql will later immediately write without prompting.
Drag & drop yout txt file onto the window and the database will be filled.


FIRST select coil type and press “get calibration”.
AFTER this you can press Stats. Additionally a CSV table with the statistical results will be written on the fly.


I do not get all frequencies

At the lower end: you FTT / window length is too short.
The time series is too short, and ProcMT does not find a reasonable solution. Hence that this also applies to stack all.
In settings you can a) tick “sharp” in order to get a longer FFT or b) manually by ticking “off” and select the window length manually. If you don’t want to re-process all data, go to the “Freqs” tab and select/deselect the frequencies to be processed.
The above changes may give more frequencies in th EDI result - if the data is good or medium quality.
In case the recording was long enough it may also work with “smooth” and/or “off” & shorter FFT. In this case ProcMT has rejected too many stacks with the longer FFT and can not make a statistics. Using a shorter FFT leads to more stacks and possibly to a reasonable statistics.

If the data quality is not so good, you may want to find out, what a “stack all” may give you.
In the “MT” Tab you can uncheck quadrant check.
Additionally you can lower the “coherency threshold” to 0.4 or uncheck “ct active”. Press “reset tensor” and “re-calculate tensor”.
The result may look awkward - but contains more / all frequencies.

For all these problems read again the chapter below.

See also Why do I need to stack timeseries

On the upper end: FFT too short.
Calibration stops at 10 kHZ and you want to see 30 kHz
Can’t see 10 kHz: parzening needs some upper frequencies, so e.g. you get 8 kHz for the MFS-06e.
Short FFT and small parzening causes the same problem.

Change the Target Frequencies

The default setting is 8 frequencies per decade. Since MT has a smooth transfer function a higher resolution does not add information.
However it may be necessary to change the list in order to fit with other projects.

Inside the ProcMT directory you find “info.sql3” - that is a SQLite database. On Mac/Linux/Windows you can (after making a copy) edit this file with SQLiteBrowser

You find 6 tables user[123]_mt_frequencies and user[123]_csem_frequencies which are reserved for editing. You can put a descending frequency list inside.
The procmt_mini will be able to load them. Hint : procmt_mini can be called with two parameters: -basedir /survey/mining and/or -target_frequencies_table user1_mt_frequencies … and so on
That way you fasten the GUI operation; create a desktop icon for example, containing these parameters.

@superuser create a file called user1_mt_frequencies.csv; put “frequencies” in line 1, then your frequencies; delete user1_mt_frequencies in info.sql3; import your csv

The csv file will be a single column file like below.


@programmer’s note: procmt has to handle data on four different OS; SQLite is a stable solution. Text files not.

Survey Folder Structure

ProcMT and other programs rely on a certain directory structure.

survey name



Northern mining














… inside ts:

EW 12 L2

EW 14 L2

EW 17 L2

Remote Green Valley


… and so on


If you don’t have and do not work with ProcMT, you may want to create it temporarily in order to work with all modules which rely on the structure.
A litte PHP script can do that:

$subdirs = array("cal", "config", "db", "dump", "edi", "filters", "jle", "jobs", "log", "processings", "shell", "tmp", "ts");
if ($argc < 2 ) {
    exit( "Usage: $argv[0] folder_name" . PHP_EOL );
else {
 if (!is_dir("$argv[1]") ) mkdir("$argv[1]");
if (is_dir("$argv[1]")) {
  foreach ($subdirs as $subdir) {
    $cdir = "$argv[1]" . "/" . "$subdir";
    echo "creating " . $cdir . PHP_EOL;
    if (!is_dir("$cdir") ) mkdir("$cdir");


Inside the cal directory you copy your calibration files in case.
If you have a ADU-07e, ADU-08e AND MFS-0Xe coils (or sensors ending with “e”) you do not need to do that. In the measdoc.xml you will find the calibration data of the connected sensors:

<channel id="2">
   <creator>software chcal 1.3</creator>
     <ci identifier="coil">MFS06e</ci>

   <caldata chopper="on" gain_2="0" gain_3="0" gain_1="0" impedance="(0,0)">
     <c0 unit="V">0.00000000e+00</c0>
     <c1 unit="Hz">1.87380000e-01</c1>
     <c2 unit="V/(nT*Hz)">1.99940000e-01</c2>
     <c3 unit="deg">8.72760000e+01</c3>


which indicates the calibration was loaded.
OTHERWISE you copy the delivered calibration file into the cal directory.

A typical calibration file has the name MFS06026.TXT and contains:

Calibration measurement with Solartron
Metronix GmbH, Kocherstr. 3, 38120 Braunschweig

Magnetometer: 026    Date: 06/12/01    Time: 11:23:02

    Hz                     deg
Chopper On
+1.0000E-01  +2.0027E-01  +8.8566E+01
+1.2589E-01  +1.9994E-01  +8.8187E+01
+1.5849E-01  +2.0034E-01  +8.7711E+01
+1.9953E-01  +1.9996E-01  +8.7177E+01


+7.9430E+03  +6.9484E-05  -4.0999E+01
+9.9995E+03  +5.1712E-05  -5.1017E+01
+1.0000E+04  +5.1707E-05  -5.1019E+01

    Hz                     deg
Chopper Off
+1.0000E+00  +1.8154E-01  +1.1703E+02
+1.2589E+00  +1.9576E-01  +1.0632E+02
+1.5849E+00  +2.0317E-01  +9.5114E+01
+1.9953E+00  +2.0268E-01  +8.3716E+01
+2.5119E+00  +1.9471E-01  +7.2457E+01



In case onfiguration files for special processings


Databases - e.g. coil calibration databases, EDI databases


dump files (spectra, applied calibration) in case dump mode activated




Job List Editor - for putting your xml joblists for this survey here


actual xml jobs running or xml jobs to be run in the future
for example: create 100 jobs and run them over night


log files in case created


pre-defined processings to submit


shell scripts or PHP scripts


temporary files


contains your sites and your timeseries
HINT even if you have downloaded a single folder like “meas_2018-10-20_09-50-00”, you MUST create a site first say test and copy meas_2018-10-20_09-50-00 into test.