multiplet-analysis

Extract coupling constants from a complex NMR multiiplet

Usage no npm install needed!

<script type="module">
  import multipletAnalysis from 'https://cdn.skypack.dev/multiplet-analysis';
</script>

README

multiplet-analysis

NPM version build status npm download

The goal of this project is to be able to determine the multiplicity of a NMR signal as well as the coupling constants. It is based on a delta-function deconvolution developed by D. Jeannerat and G. Bodenhausen and published in J. Magn. Reson. 1999, 141(1), p133 doi:10.1006/jmre.1999.1845. More info and discussion in doc/README.md The result of the analysis that is an object composed:

  • delta
  • multiplicity : m (massif if delta is unspecified), s, s br, d br. We can repeat the multiplicity in this field but if it is empty we should use it from coupling constants array.
  • peak: [{x: , y:, z:, width}, {x: , y:, z:, width}, ]
  • j []
    • multiplicity: (d, t, q, p pent quint, sext hex, sept hept, oct, non)
    • coupling: (Hz)

Technical information

Run example

node -r esm examples/quadruplet.js
node -r esm examples/ddd.js
node -r esm examples/ddd_ABCD.js
node -r esm examples/doublet.js

node -r esm examples/simulate.js; # to simulate from a user-defined spin system
node -r esm examples/dd-exp.js; # to simulate from a user-defined spin system
node -r esm examples/asymDoublet.js; # to simulate from a user-defined spin system

Developement

git clone https://github.com/cheminfo/multiplet-analysis.git
cd multiplet-analysis
code .

To run the jest tests in an interactive way (preferably on a second screen): npx jest --watch

In order to debug you may anytime add a console.log in the code. The result of the log will appear in the jest --watch.

In the jest --.watch terminal you may as well select only one specific test.

In is also possible to select a specific test in the code by adding .only after describe or it like for example: it.only('s

Debugging data

In order to debug algorithm it is important to be able to visualize them. In the project we added a folder /examples/web that contains index.html. This webpage will load data.json and annotations.json and display a chart.

To automatically use and refresh this webpage you should install the plugin Live server typing code --install-extension ritwickdey.liveserver. Then, right click on index.html and open with live server. This will open the webpage in the browser and reload it if the files change.

There are also 2 examples files to create the data:

  • exampleGenerateAnnotations : create an array of annotations
  • exampleGenerateData : create an object like {x:[], y:[]}

When you clone / update the project don't forget to npm i to load possible new dependencies.

If you want to execute those scripts written as module you need to use esm that is installed as a development dependency. npm install esm node -r esm ./examples/web/exampleGenerateAnnotations.js

Creating simulated data

Spectra can be simulated on

http://www.nmrdb.org/simulator/

And the data can be download as a JSON file.

Installation

npm i multiplet-analysis

Usage

import library from 'multiplet-analysis';

const result = library(args);
// result is ...

API Documentation

License

MIT

npm i ml-fft npm home ml-fft

Demo and examples

Main scientific page.

example 1.

example 2.