Earth's Field PP NMR on an Oak Tree
收藏资源简介:
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 cyclealways 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.



