Commit 6d1fe092 authored by Max Chandler's avatar Max Chandler

initial commit

parents
*.pyc
/venv/
/Basis/
.idea/
models/incomplete/
Datasets/Benchmark/
Datasets/
[submodule "Simulators/FIDA/FID-A"]
url = git@github.com:CIC-methods/FID-A.git
path = Simulators/FIDA/FID-A
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
# MRSNet
MR spectral quantification using convoloutional neural networks.
This framework provides methods to generate datasets from loaded LCModel ".BASIS" files or simulated by [FID-A](https://github.com/CIC-methods/FID-A) or
[PyGamma](https://scion.duhs.duke.edu/vespa/gamma/wiki/PyGamma).
## Built With
### Software
* [Keras](https://keras.io/) - The Deep Learning framework used
* [Tensorflow](https://www.tensorflow.org/) - Underlying Machine Learning library
* [FID-A](https://github.com/CIC-methods/FID-A) - MRS simulation toolbox
* [PyGamma](https://scion.duhs.duke.edu/vespa/gamma/wiki/PyGamma) - Another MRS simulation toolbox
* [VeSPA](https://scion.duhs.duke.edu/vespa/project) - Versatile Simulation, Pulses and Analysis
### Data sources
* [Swansea Benchmark Dataset](REF?) - Benchmark phantom datasets collected at Swansea University's 3T Siemens scanner.
* [Purdue LCModel basis sets](http://purcell.healthsciences.purdue.edu/mrslab/basis_sets.html) - Data source for the LCModel basis sets
## Getting Started
### Prerequisites
* Python 2.7 - Unfortunately, PyGamma still requires Python 2.7 to run so the entire library is written in Python 2.7
* MATLAB - Only required if you plan to simulate new FID-A spectra.
* Linux system packages:
* Git-lfs for git submodule support: `git-lfs`
* Python2 virtual environment to isolate installation packages and environment: `python-virtualenv`
* Install these using your package manager with root privileges. E.g. Debian based distributions: `sudo apt update && sudo apt install git-lfs python-virtualenv`
### Install instructions (Linux)
For simplicity, python packages are installed into a virtual environment.
1. Clone the repository: `git clone https://qyber.black/MRIS/mrsnet.git`
2. Navigate to the directory: `cd mrsnet`
3. Update submodules: `git submodule init && git submodule update`
4. Create a virtual environment 'venv': `python2 -m virtualenv venv`
5. Activate the virtual environment: `source venv/bin/activate`
6. Install the requirements (CPU or GPU):
1. CPU version: `pip install -r requirements.txt`
2. GPU version (requires [CUDA](https://developer.nvidia.com/cuda-zone) : There's a good guide available [here](https://www.tensorflow.org/install/gpu)) : `pip install -r gpu_requirements.txt`
7. Download the additional required data: `python2 setup.py`
## Training a network
Training a network is the default for model.py:
```
python2 model.py
```
To see a list of options and their defaults, call:
```
python2 model.py --help
```
An example of a more complex training call:
```
python2 model.py -N 10000 -e 200 -b 16 -d fida --linewidths 0.75 1 1.25 --omega 900 --model_name mrsnet_small_kernel_no_pool
```
This above example will simulate spectra and train a network with:
* Train for 200 epochs, with a mini-batch size of 16
* Spectra are sourced from FID-A, with a scanner B0 field of 900MHz
* 10,000 Spectra are evenly split (3,333) over the linewidths (0.75, 1, 1.25)
* For the network architecture called "mrsnet_small_kernel_no_pool" (found in [networks.py](networks.py))
#### Network performance
By default, networks are stored in `MRSNet/models/`along with some basic analytics.
## Quantifying Spectra
Quantifying spectra:
```python2
python2 model.py -m quantify
```
Defaults are to use the E1 MEGA-PRESS benchmark spectra, with the best network from MRSNet. Output will
Quantifying spectra and specifying the model and spectra directory:
```
python2 model.py -m quantify --network_path "models/complete/some_model_dir/" --spectra_path "some/spectra/directory/"
```
The default behaviour of quantify is to use the best network from the MRSNet paper to quantify the bundled E3 dataset:
```
Quantifying 13 MEGA-PRESS Spectra
This network can only quantify: ['creatine', 'gaba', 'glutamate', 'glutamine', 'n-acetylaspartate']
Network path: ./models/complete/MRSNet/
DICOM path: ./Datasets/Benchmark/E1/MEGA-PRESS/1250Hz/
Spectra ID: GABA_SERIES_00P5MM
Metabolite Quantity
Creatine 0.077157
GABA 0.556846
Glutamate 0.114418
Glutamine 0.203197
N-Acetylaspartate 0.048382
```
### Quantifying your own MEGA-PRESS spectra
The code will attempt to analyse all of the spectra contained in the provided directory.
There are a couple of caveats to enable this to work correctly:
1. All three acquisitions for each MEGA-PRESS scan must be present (edit on, edit off, difference).
2. Spectra that belong to the same scan must have a unique ID of your choise added to their filename (e.g. SCAN_001).
1. If you know the ground truth of the scan, it should be added to the dictionary located in Utilities/constants.py. This enables the code to know which spectra are from the same scans to group them together.
3. Spectra of the different acquisition types must be labeled, by adding either "EDIT_OFF", "EDIT_ON" or "DIFF" to anywhere after the unique ID from 2 in their filename.
An example for two MEGA-PRESS scan would be six files:
```
"SCAN_000_EDIT_OFF.ima"
"SCAN_000_EDIT_ON.ima"
"SCAN_000_DIFF.ima"
"SCAN_001_EDIT_OFF.ima"
"SCAN_001_EDIT_ON.ima"
"SCAN_001_DIFF.ima"
```
### Non-Siemens DICOM files
Loading of non-Siemens DICOM files has not been tested.
## Versioning
We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/your/project/tags).
## License
This project is licensed under the GNP [AGPLv3 License](https://choosealicense.com/licenses/agpl-3.0/), see the [LICENSE](LICENSE) file for details.
## Acknowledgments
* Brian Soher (VeSPA/PyGamma) for help locating the PyGamma pulse sequence code for MEGA-PRESS, PRESS and STEAM.
Subproject commit f44780dfca8b31ad12a2119d8f1e5bbd20ba903c
import subprocess
import os
from Utilities.constants import OMEGA, FULL_METABOLITE_LIST, GYROMAGNETIC_RATIO
def fida_spectra(metabolite_names, omega=OMEGA, linewidth=1.0, npts=4096, adc_dt=4e-4, save_dir='./cache/fida/'):
matlab_command = "addpath(genpath([pwd,'/Simulators/FIDA/'])); "
matlab_command += "Bfield=" + str(omega/GYROMAGNETIC_RATIO) + "; "
matlab_command += "Npts=" + str(npts) + "; "
matlab_command += "sw="+str(1/adc_dt)+"; "
matlab_command += "metabolites={"
for m in metabolite_names:
matlab_command += '\'' + convert_metabolite_name(m) + '\','
matlab_command = matlab_command.rstrip(',')
matlab_command+="}; "
matlab_command += "linewidths=[" + str(linewidth) + "]; "
matlab_command += "save_dir='" + save_dir + "'; "
matlab_command += "run_custom_simMegaPressShapedEdit; exit; exit;"
try:
p = subprocess.Popen(['matlab', '-nosplash', '-nodisplay', '-r', matlab_command])
except OSError as e:
if e.errno == os.errno.ENOENT:
raise Exception('Matlab is not installed on this system! Can\'t simulate FID-A spectra.\n'
'You can simulate them on another system, and put them into MRSNet/cache/fida/.')
else:
raise
p.wait()
def convert_metabolite_name(name):
# converts to the expected value for FID-A.
# see FID-A/simulationTools/metabolites for options
name = name.lower()
m_names = {'creatine': 'Cr', 'gaba': 'GABA', 'glutamate': 'Glu', 'glutamine': 'Gln', 'lactate': 'Lac',
'myo-inositol': 'Ins', 'n-acetylaspartate': 'NAA', 'taurine': 'Tau'}
return m_names[name]
% run_simMegaPressShapedEdit.m
% Jamie Near, McGill University 2014.
%
% USAGE:
% This script is run simply by editing the input parameters and then
% clicking "Run".
%
% DESCRIPTION:
% This script simulates a MEGA-PRESS experiment with fully shaped editing
% pulses. Phase cycling of editing pulses is performed, and summation
% across phase cycles is performed.
%
% INPUTS:
% To run this script, edit the parameters below as desired and then click
% "run":
% editWaveform = name of editing pulse waveform.
% editOnFreq = freqeucny of edit on pulse[ppm]
% editOffFreq = frequency of edit off pulse[ppm]
% editTp = duration of editing pulses[ms]
% Npts = number of spectral points
% sw = spectral width [Hz]
% Bfield = magnetic field strength [Tesla]
% lw = linewidth of the output spectrum [Hz]
% taus = vector of pulse sequence timings [ms]
% spinSys = spin system to simulate
% editPhCyc1 = vector of phase cycling steps for 1st editing pulse [degrees]
% editPhCyc2 = vector of phase cycling steps for 2nd editing pulse [degrees]
%
% OUTPUTS:
% outON = Simulated MEGA-PRESS edit-ON spectrum.
% outOFF = Simulated ExTE-MEGA-PRESS edit-OFF spectrum.
% outDIFF = Simulated ExTE-MEGA-PRESS difference spectrum.
mkdir(save_dir);
for ii=1:length(metabolites)
for jj = 1 : length(linewidths)
spinSys=metabolites{ii}; %spin system to simulate
% ************INPUT PARAMETERS**********************************
editWaveform = 'sampleEditPulse.pta'; %name of editing pulse waveform.
editOnFreq = 1.9; %freqeucny of edit on pulse[ppm]
editOffFreq = 7.4; %frequency of edit off pulse[ppm]
editTp = 20; %duration of editing pulses[ms]
% Npts = 4096; %number of spectral points
% sw = 1250; %spectral width [Hz]
% Bfield = 2.89; %magnetic field strength [Tesla]
lw = linewidths(jj); %linewidth of the output spectrum [Hz]
taus=[5,... %Time from excitation to 1st refoc pulse [ms]
17,... %Time from 1st refoc pulse to 1st editing pulse [ms]
17,... %Time from 1st editing pulse to 2nd refoc pulse [ms]
17,... %Time from 2nd refoc pusle to 2nd editing pulse [ms]
12]; %Time from 2nd editing pulse to ADC onset [ms]
centreFreq = 3.0; %Centre Frequency of MR spectrum [ppm];
editPhCyc1 = [0 90]; %phase cycling steps for 1st editing pulse [degrees]
editPhCyc2 = [0 90 180 270]; %phase cycling steps for 2nd editing pulse [degrees]
% ************END OF INPUT PARAMETERS**********************************
%Load RF waveforms
editRF=io_loadRFwaveform(editWaveform,'inv',0);
gamma=42577000; %gyromagnetic ratio
%Load spin systems
load spinSystems
sys=eval(['sys' spinSys]);
%This is the step where the editing pulse waveform (initially a pulse with
%zero-frequency) is frequency shifted to produce and edit-on and an
%edit-off pulse;
editRFon=rf_freqshift(editRF,editTp,(centreFreq-editOnFreq)*Bfield*gamma/1e6);
editRFoff=rf_freqshift(editRF,editTp,(centreFreq-editOffFreq)*Bfield*gamma/1e6);
%Initialize structures:
outON_epc=cell(length(editPhCyc1),length(editPhCyc2));
outOFF_epc=cell(length(editPhCyc1),length(editPhCyc2));
outON=struct([]);
outOFF=struct([]);
%loop through space: Don't forget to initialize the parallel processing
%toolbox workers using 'matlabpool open N' (for N workers, 12 max).
%for X=1:length(x);
for EP1=1:length(editPhCyc1)
for EP2=1:length(editPhCyc2)
disp(['Executing First Edit phase cycle ' num2str(EP1) ' of ' num2str(length(editPhCyc1)) ', '...
' and Second Edit phase cycle ' num2str(EP2) ' of ' num2str(length(editPhCyc2)) '!!!']);
outON_epc{EP1}{EP2}=sim_megapress_shapedEdit(Npts,sw,Bfield,lw,taus,sys,...
editRFon,editTp,editPhCyc1(EP1),editPhCyc2(EP2));
outOFF_epc{EP1}{EP2}=sim_megapress_shapedEdit(Npts,sw,Bfield,lw,taus,sys,...
editRFoff,editTp,editPhCyc1(EP1),editPhCyc2(EP2));
if EP1==1 && EP2==1
outON=outON_epc{EP1}{EP2};
outOFF=outOFF_epc{EP1}{EP2};
else
outON=op_addScans(outON,outON_epc{EP1}{EP2});
outOFF=op_addScans(outOFF,outOFF_epc{EP1}{EP2});
end
end
end
% figure
% plot(outON.ppm, outON.specs, outOFF.ppm, outOFF.specs);
nu = outOFF.ppm;
pulse_sequence = 'megapress';
linewidth = outOFF.linewidth;
t = outOFF.t;
omega = outOFF.Bo;
m_name = metabolites{ii};
edit = false;
fid = outOFF.fids;
fft = outOFF.specs;
f_name = sprintf('FIDA_%s_MEGA-PRESS_EDIT_OFF_LW_%f.mat',m_name, lw);
save([save_dir, f_name], 'm_name', 'nu','fid', 'fft', 'linewidth', 't', 'omega', 'edit', 'pulse_sequence');
edit = true;
fid = outON.fids;
fft = outON.specs;
f_name = sprintf('FIDA_%s_MEGA-PRESS_EDIT_ON_LW_%f.mat',m_name, lw);
save([save_dir, f_name], 'm_name', 'nu','fid', 'fft', 'linewidth', 't', 'omega', 'edit', 'pulse_sequence');
end
end
\ No newline at end of file
SysName (2) : NAAG-truncated-siemens
NSpins (0) : 3 - Chemical shifts were measured in H2O solution.
Iso(0) (2) : 1H
Iso(1) (2) : 1H
Iso(2) (2) : 1H
PPM(0) (1) : 2.045
PPM(1) (1) : 2.045
PPM(2) (1) : 2.045
J(0,1) (1) : 0.0
J(0,2) (1) : 0.0
J(1,2) (1) : 0.0
Omega (1) : 64.0
SysName (2) : NAAG-truncated
NSpins (0) : 1 - Chemical shifts were measured in H2O solution.
Iso(0) (2) : 1H
PPM(0) (1) : 2.042
Omega (1) : 64.0
SysName (2) : acetate
NSpins (0) : 3 - Chemical shifts were measured in H2O solution.
Iso(0) (2) : 1H
Iso(1) (2) : 1H
Iso(2) (2) : 1H
PPM(0) (1) : 1.904
PPM(1) (1) : 1.904
PPM(2) (1) : 1.904
J(0,1) (1) : 0.0
J(0,2) (1) : 0.0
J(1,2) (1) : 0.0
Omega (1) : 64.0
SysName (2) : alanine
NSpins (0) : 4 - Chemical shifts were measured in H2O solution.
Iso(0) (2) : 1H
Iso(1) (2) : 1H
Iso(2) (2) : 1H
Iso(3) (2) : 1H
PPM(0) (1) : 1.4667
PPM(1) (1) : 1.4667
PPM(2) (1) : 1.4667
PPM(3) (1) : 3.7746
J(0,1) (1) : -14.366
J(0,2) (1) : -14.366
J(0,3) (1) : 7.234
J(1,2) (1) : -14.366
J(1,3) (1) : 7.234
J(2,3) (1) : 7.234
Omega (1) : 64.0
SysName (2) : aspartate
NSpins (0) : 3 - Chemical shifts were measured in H2O solution.
Iso(0) (2) : 1H
Iso(1) (2) : 1H
Iso(2) (2) : 1H
PPM(0) (1) : 3.8914
PPM(1) (1) : 2.8011
PPM(2) (1) : 2.6533
J(0,1) (1) : 3.647
J(0,2) (1) : 9.107
J(1,2) (1) : -17.426
Omega (1) : 64.0
SysName (2) : choline-trimethyl
NSpins (0) : 10 - Chemical shifts were measured in H2O solution.
Iso(0) (2) : 1H
Iso(1) (2) : 1H
Iso(2) (2) : 1H
Iso(3) (2) : 1H
Iso(4) (2) : 1H
Iso(5) (2) : 1H
Iso(6) (2) : 1H
Iso(7) (2) : 1H
Iso(8) (2) : 1H
Iso(9) (2) : 14N
PPM(0) (1) : 3.185
PPM(1) (1) : 3.185
PPM(2) (1) : 3.185
PPM(3) (1) : 3.185
PPM(4) (1) : 3.185
PPM(5) (1) : 3.185
PPM(6) (1) : 3.185
PPM(7) (1) : 3.185
PPM(8) (1) : 3.185
PPM(9) (1) : 100.0
J(0,1) (1) : 0.0
J(0,2) (1) : 0.0
J(0,3) (1) : 0.0
J(0,4) (1) : 0.0
J(0,5) (1) : 0.0
J(0,6) (1) : 0.0
J(0,7) (1) : 0.0
J(0,8) (1) : 0.0
J(0,9) (1) : 0.57
J(1,2) (1) : 0.0
J(1,3) (1) : 0.0
J(1,4) (1) : 0.0
J(1,5) (1) : 0.0
J(1,6) (1) : 0.0
J(1,7) (1) : 0.0
J(1,8) (1) : 0.0
J(1,9) (1) : 0.57
J(2,3) (1) : 0.0
J(2,4) (1) : 0.0
J(2,5) (1) : 0.0
J(2,6) (1) : 0.0
J(2,7) (1) : 0.0
J(2,8) (1) : 0.0
J(2,9) (1) : 0.57
J(3,4) (1) : 0.0
J(3,5) (1) : 0.0
J(3,6) (1) : 0.0
J(3,7) (1) : 0.0
J(3,8) (1) : 0.0
J(3,9) (1) : 0.57
J(4,5) (1) : 0.0
J(4,6) (1) : 0.0
J(4,7) (1) : 0.0
J(4,8) (1) : 0.0
J(4,9) (1) : 0.57
J(5,6) (1) : 0.0
J(5,7) (1) : 0.0
J(5,8) (1) : 0.0
J(5,9) (1) : 0.57
J(6,7) (1) : 0.0
J(6,8) (1) : 0.0
J(6,9) (1) : 0.57
J(7,8) (1) : 0.0
J(7,9) (1) : 0.57
J(8,9) (1) : 0.57
Omega (1) : 64.0
SysName (2) : choline-truncated
NSpins (0) : 3 - Chemical shifts were measured in H2O solution.
Iso(0) (2) : 1H
Iso(1) (2) : 1H
Iso(2) (2) : 1H
PPM(0) (1) : 3.185
PPM(1) (1) : 3.185
PPM(2) (1) : 3.185
J(0,1) (1) : 0.0
J(0,2) (1) : 0.0
J(1,2) (1) : 0.0
Omega (1) : 64.0
SysName (2) : creatine
NSpins (0) : 6 - Chemical shifts were measured in H2O solution.
Iso(0) (2) : 1H
Iso(1) (2) : 1H
Iso(2) (2) : 1H
Iso(3) (2) : 1H
Iso(4) (2) : 1H
Iso(5) (2) : 1H
PPM(0) (1) : 6.649
PPM(1) (1) : 3.913
PPM(2) (1) : 3.913
PPM(3) (1) : 3.027
PPM(4) (1) : 3.027
PPM(5) (1) : 3.027
J(0,1) (1) : 0.0
J(0,2) (1) : 0.0
J(0,3) (1) : 0.0
J(0,4) (1) : 0.0
J(0,5) (1) : 0.0
J(1,2) (1) : 0.0
J(1,3) (1) : 0.0
J(1,4) (1) : 0.0
J(1,5) (1) : 0.0
J(2,3) (1) : 0.0
J(2,4) (1) : 0.0
J(2,5) (1) : 0.0
J(3,4) (1) : 0.0
J(3,5) (1) : 0.0
J(4,5) (1) : 0.0
Omega (1) : 64.0
SysName (2) : dss
NSpins (0) : 2
Iso(0) (2) : 1H
Iso(1) (2) : 1H
PPM(0) (1) : 0.0
PPM(1) (1) : 0.0
J(0,1) (1) : 0.0
Omega (1) : 64.0
SysName (2) : gaba
NSpins (0) : 6 - Kaiser model
Iso(0) (2) : 1H
Iso(1) (2) : 1H
Iso(2) (2) : 1H
Iso(3) (2) : 1H
Iso(4) (2) : 1H
Iso(5) (2) : 1H
PPM(0) (1) : 2.284
PPM(1) (1) : 2.284
PPM(2) (1) : 1.888
PPM(3) (1) : 1.888
PPM(4) (1) : 3.012
PPM(5) (1) : 3.012
J(0,1) (1) : 0.0
J(0,2) (1) : 7.352
J(0,3) (1) : 7.352
J(0,4) (1) : 0.0
J(0,5) (1) : 0.0
J(1,2) (1) : 0.0
J(1,3) (1) : 7.352
J(1,4) (1) : 7.352
J(1,5) (1) : 0.0
J(2,3) (1) : 0.0
J(2,4) (1) : 6.377
J(2,5) (1) : 7.960
J(3,4) (1) : 8.139
J(3,5) (1) : 7.495
J(4,5) (1) : 0.0
Omega (1) : 64.0
SysName (2) : glutamate
NSpins (0) : 5 - Chemical shifts were measured in H2O solution.
Iso(0) (2) : 1H
Iso(1) (2) : 1H
Iso(2) (2) : 1H
Iso(3) (2) : 1H
Iso(4) (2) : 1H
PPM(0) (1) : 3.7433
PPM(1) (1) : 2.0375
PPM(2) (1) : 2.1200
PPM(3) (1) : 2.3378
PPM(4) (1) : 2.3520
J(0,1) (1) : 7.331
J(0,2) (1) : 4.651
J(0,3) (1) : 0.0
J(0,4) (1) : 0.0
J(1,2) (1) : -14.849
J(1,3) (1) : 6.413
J(1,4) (1) : 8.406
J(2,3) (1) : 8.478
J(2,4) (1) : 6.875
J(3,4) (1) : -15.915
Omega (1) : 64.0
SysName (2) : glutamine
NSpins (0) : 7 - Chemical shifts were measured in H2O solution.
Iso(0) (2) : 1H
Iso(1) (2) : 1H
Iso(2) (2) : 1H
Iso(3) (2) : 1H
Iso(4) (2) : 1H
Iso(5) (2) : 1H
Iso(6) (2) : 1H
PPM(0) (1) : 3.753
PPM(1) (1) : 2.129
PPM(2) (1) : 2.109
PPM(3) (1) : 2.432
PPM(4) (1) : 2.454
PPM(5) (1) : 6.816
PPM(6) (1) : 7.529
J(0,1) (1) : 5.847
J(0,2) (1) : 6.5
J(0,3) (1) : 0.0
J(0,4) (1) : 0.0
J(0,5) (1) : 0.0
J(0,6) (1) : 0.0
J(1,2) (1) : -14.504
J(1,3) (1) : 9.165
J(1,4) (1) : 6.347
J(1,5) (1) : 0.0
J(1,6) (1) : 0.0
J(2,3) (1) : 6.324
J(2,4) (1) : 9.209
J(2,5) (1) : 0.0
J(2,6) (1) : 0.0
J(3,4) (1) : -15.371
J(3,5) (1) : 0.0
J(3,6) (1) : 0.0
J(4,5) (1) : 0.0
J(4,6) (1) : 0.0
J(5,6) (1) : 0.0
Omega (1) : 64.0
SysName (2) : glycine
NSpins (0) : 2 - Chemical shifts were measured in H2O solution.
Iso(0) (2) : 1H
Iso(1) (2) : 1H
PPM(0) (1) : 3.548
PPM(1) (1) : 3.548
J(0,1) (1) : 0.0
Omega (1) : 64.0
SysName (2) : histamine
NSpins (0) : 7 - Chemical shifts were measured in H2O solution.
Iso(0) (2) : 1H
Iso(1) (2) : 1H
Iso(2) (2) : 1H
Iso(3) (2) : 1H
Iso(4) (2) : 1H
Iso(5) (2) : 1H
Iso(6) (2) : 14N
PPM(0) (1) : 2.9813
PPM(1) (1) : 2.9897
PPM(2) (1) : 3.2916
PPM(3) (1) : 3.2916
PPM(4) (1) : 7.852
PPM(5) (1) : 7.094
PPM(6) (1) : 100.0
J(0,1) (1) : -16.12
J(0,2) (1) : 6.868
J(0,3) (1) : 8.147
J(0,4) (1) : 0.0
J(0,5) (1) : 0.0
J(0,6) (1) : 0.0
J(1,2) (1) : 7.001
J(1,3) (1) : 0.0
J(1,4) (1) : 0.0
J(1,5) (1) : 0.0
J(1,6) (1) : 0.0
J(2,3) (1) : -14.145
J(2,4) (1) : 0.0
J(2,5) (1) : 0.73
J(2,6) (1) : 0.0
J(3,4) (1) : 0.0
J(3,5) (1) : 0.73
J(3,6) (1) : 0.0
J(4,5) (1) : 0.0
J(4,6) (1) : 1.07
J(5,6) (1) : 1.19
Omega (1) : 64.0
SysName (2) : histidine
NSpins (0) : 6 - Chemical shifts were measured in H2O solution.
Iso(0) (2) : 1H
Iso(1) (2) : 1H
Iso(2) (2) : 1H
Iso(3) (2) : 1H
Iso(4) (2) : 1H
Iso(5) (2) : 14N
PPM(0) (1) : 3.9752
PPM(1) (1) : 3.1195
PPM(2) (1) : 3.2212
PPM(3) (1) : 7.791
PPM(4) (1) : 7.058
PPM(5) (1) : 100.0
J(0,1) (1) : 7.959
J(0,2) (1) : 4.812
J(0,3) (1) : 0.0
J(0,4) (1) : 0.0
J(0,5) (1) : 0.0
J(1,2) (1) : -15.513
J(1,3) (1) : 0.0
J(1,4) (1) : 0.72
J(1,5) (1) : 0.0
J(2,3) (1) : 0.0
J(2,4) (1) : 0.72
J(2,5) (1) : 0.0
J(3,4) (1) : 0.0
J(3,5) (1) : 1.07
J(4,5) (1) : 1.2
Omega (1) : 64.0
SysName (2) : lactate
NSpins (0) : 4 - Chemical shifts were measured in H2O solution.
Iso(0) (2) : 1H
Iso(1) (2) : 1H
Iso(2) (2) : 1H
Iso(3) (2) : 1H
PPM(0) (1) : 4.0974
PPM(1) (1) : 1.3142
PPM(2) (1) : 1.3142
PPM(3) (1) : 1.3142
J(0,1) (1) : 6.933
J(0,2) (1) : 6.933
J(0,3) (1) : 6.933
J(1,2) (1) : 0.0
J(1,3) (1) : 0.0
J(2,3) (1) : 0.0
Omega (1) : 64.0