Published April 17, 2026 | Version v1

Earth's Field PP NMR on an Oak Tree

  • 1. ROR icon LIAG Institute for Applied Geophysics
  • 2. ROR icon Leibniz University Hannover

Description

The data in this repository was generated by performing Earth's field PP NMR measurements on an oak tree and by processing and inverting this data with the MRSmatlabTrees Software (https://github.com/TobiasSpl/MRSmatlabTrees).

To reproduce the processing and inversion please follow the following steps:

  • start MATLAB and navigate to the MRSmatlabTrees folder
  • run "startMRSmatlabTrees"
    • The raw data is contained in five files inside the "rawData" folder:
      •  "Single_Pulse_FID_w_Prepol_step1"
      •  "Single_Pulse_FID_w_Prepol_step1_1.lvm"
      • "Single_Pulse_FID_w_Prepol_step1_2.lvm"
      •  "Single_Pulse_FID_w_Prepol_step1_3.lvm"
      •  "Single_Pulse_FID_w_Prepol_step1_4.lvm"
    • The Signal was recorded on Channel 2
  • Processing with MRSSignalPro:
    • Run "MRSSignalPro"
    • Load raw data
    • Switch to channel rx 2
    • Fix phases of small pulses: 
      • Edit -> Overwrite Phases 
      • replace errenous phases (red) by the closest correct phases (green) of the same phase cycle
        always two columns belong to the same phase cycle (because of 1 interleave) followed by two columns of opposite phase cycle (i.e. shifted by pi)
        the phase changes with increasing q
    • Remove spike at beginning of rec 3 q 24 manually
    • Run automatic despike based on q-stack with threshold 20 and width of 5 ms
    • Run HNC 16.6 Hz, for some measurements up to two reruns are necessary
    • Run HNC 50 Hz
          
    • This is the state of the "SchillerlageOakProcessed.mrsr" file
          
    • Set filter to Pass freq. of 200Hz
    • Export data to .mrsd format (File -> Save as Stacked Data), stack the two phases seperately (plus & minus)
          
    •  This is the state of the two files "SchillerlageOakProcessed_plus.mrsd" and "SchillerlageOakProcessed_minus.mrsd"
          
    • If you want to create lookup tables in MRSKernel, create a file with all the phases as well (all)
          
    • This is the state of the file "SchillerlageOakProcessed_all.mrsd"
          
  • Lookup table calculation with MRSKernel:
    • Warning, this step takes a long time. The step can be skipped when using the supplied lookup tables
    • This step needs a python installation with the following packages:
              numpy, array, sys, os, json, multiprocess, functools, time, and numbalsoda (https://github.com/Nicholaswogan/numbalsoda)
              A modified version of the pyBlochus package (https://github.com/ThoHiller/nmr-blochus) is already included in MRSmatlabTrees
    • Run "MRSKernel"
    • load the "SchillerlageOakProcessed_all.mrsd" file (File -> Import Parameter -> From field data)
    • start the PP lookup table calculation by clicking on "Px lookup table -> calc", warning: this will take a while (maybe one hour)
    • save the lookup table (Px lookup table -> save)
    • start the Tx lookup table calculation by clicking on "Tx lookup table -> calc", warning: this will take even longer (several hours)
    • save the lookup table (Tx lookup table -> save)
          
    • This is the state of the two lookup table files "SchillerlageOakPPRampLUTable.mrspp" and "SchillerslageOakPulseLUTable.mrsp"
          
  • Kernel calculation with MRSKernel:
    • Run "MRSKernel"
    • Load a .mrsd file ("...plus.mrsd" or "...minus.mrsd", File -> Import Parameter -> From field data) to get the right ramp and pulse shapes, as well as the Larmor frequency and the pulse moments
    • Load the lookup table for the PP ramp "SchillerlageOakPPRampLUTable.mrspp"
    • Load the lookup table for the pulse "SchillerslageOakPulseLUTable.mrsp"
    • Choose the pulse sign of the .mrsd file you loaded in the first step
    • Values for the diameter of the coils can be entered as a comma separated list. This lets us account for the horizontal extent of the coils. The respective coils "turn"-field needs to have the same number of elements. For example: instead of having a single receiver coil with a diameter of ~0.708 m and 20 turns we enter diameters of 0.705, 0.710 and turns 10,10. Similarly, the fields "... vertical extent [m]" and "... vertical elements" let us account for the vertical extent of each coil
    • We use the following parameters:
      • Tree Diameter [m]: 0.7m
      • Loop shape: InLoop
      • Diameter Tx [m]: 0.705
      • Turns Tx: 1
      • Diameter Rx [m]: 0.705, 0.71
      • Turns Rx [m]: 10, 10
      • Px pulse on/off: on
      • Px shape: circular
      • Px diameter [m]: 0.705,0.725,0.745
      • Px current [A]: -62.2 (the sign is very important, because it signals counterclockwise prepolarization. The amplitude will later be overwritten by the currents from the loaded .mrsd files)
      • Px turns: 13,13,13
      • Px ramp: "GMR-Flex"
      • Px ramp time: 1ms
      • Px-Tx-delay [ms]: 0
      • Pulse sequence: FID
      • Pulse type: standard
      • Pulse sign: choose the pulse sign of the .mrsd file you loaded in the first step
      • Pulse duration: set by the loaded .mrsd file
      • Off-resonance freq. [Hz]: 0
      • Pulse amplitudes: set by the loaded .mrsd file
      • B_0 magnitude [nT]: set by the loaded .mrsd file
      • Larmor frequency [Hz]: set by the loaded .mrsd file
      • B_0 inclination [°]: 68
      • B_0 declination [°]: 0
      • Temperature [K]: 290
      • Bloch Siegert shift: true
      • generate z,phi and r Kernels: true
      • generate NS and EW slices: false
      • Tx vertical offset [m]: 0.220
      • Rx vertical offset [m]: 0.193
      • Px vertical offset [m]: 0.037
      • Tx vertical extent [m]: 0.0
      • Rx vertical extent [m]: 0.043
      • Px vertical extent [m]: 0.073
      • Tx vertical elements: 1
      • Rx vertical elements: 3
      • Px vertical elements: 5
    • Run the kernel calculatation
    • Save the kernel
    • repeat for the second pulse sign
          
    • This is the state of the files "SchillerlageOakKernel_minus.mrsk" and "SchillerlageOakKernel_plus.mrsk"
          
  • Initial fit with MRSFit:
    • Run "MRSFit"
    • load the "SchillerlageOakProcessed_plus.mrsd" file (File -> Load)
    • switch to channel rx 2
    • check if the fits are reasonable
    • save as ".mrsd" file (File -> Save)
    • repeat with the "SchillerlageOakProcessed_minus.mrsd" file
          
    •  This is the state of the "SchillerlageOakProcessed_plus_fit.mrsd" and "SchillerlageOakProcessed_minus_fit.mrsd" files
          
  • Inversion with MRSQTInversion
    • Run "MRSQTInversion"
    • Load the data file "SchillerlageOakProcessed_plus_fit.mrsd" (File -> Load data)
    • Switch to channel rx 2
    • Add the second data file "SchillerlageOakProcessed_minus_fit.mrsd" (File -> Add data), enter a phase shift of 180°
    • Load the kernel file "SchillerlageOakKernel_plus.mrsk" (File -> Load kernel)
    • Add the second kernel file "SchillerlageOakKernel_minus.mrsk" (File -> Add kernel), enter a phase shift of 180°
    • We use the following settings:
      • Signal: FID
      • Dataspace: complex
      • Gate Integration true -> N logspaced gates: 50
      • Instrument Phase: 0 (will be determined by the inversion)
      • Active/Inactive qs: all active
      • depth - decaytime: smooth - mono
      • T2* (min/max): 0.005 / 0.5
      • water content (min/max): 0 / 1
      • Regularization Water Content 500000
      • Regularization T2* 500000
      • Structural coupling: false
      • max. iterations: 300
      • number of statistic runs (bootstraps): 0
    • Click Run: due to the high number of max iterations, this will take a while
    • Save the obtained inversion
          
    • This is the state of the file "SchillerlageOakProcessed_Lambda500k.mrsi"
          
  • The Scripts in the Folder "PlotScripts" can be used to plot the respective data. The resulting figures can also be found in this folder.
        
            
        
        
        
        
        
        
            
            
            
        

 

 

 

 

Files

OakNMRData.zip

Files (355.2 MB)

Name Size
md5:8afa566cf8d356c40cd9894138dc5d22
355.2 MB Preview Download

Additional details

Software

Repository URL
https://github.com/TobiasSpl/MRSmatlabTrees
Programming language
MATLAB