GitXplorerGitXplorer
m

icoshift

public
17 stars
10 forks
3 issues

Commits

List of commits on branch master.
Unverified
a48c132c2f6869971b8a214229e4e206532d2dae

Merge branch 'master' of github.com:mfitzp/icoshift

committed 10 years ago
Unverified
91a83f7e8f23287486a7fb643b4a62b392a95c8a

Fix to segment generation (from n segments) to match the MATLAB implementation; fixes previous bugs on some values of n

committed 10 years ago
Unverified
a7c3a650255202ec2132badb66ce8c43ac032458

Update the function documentation to match the Python API

committed 10 years ago
Unverified
54379b4a0869716a493cd1e6a1bce79246fa2452

Mostly functional implementation: remaining is NaN filling, custom Scales, and errors on a few segmental settings (source data dependent)

committed 10 years ago
Unverified
f57b833a29b5d6550eebc6f9a81389ed3249db19

Fill-with NaN () not works for non-intervals

committed 10 years ago
Unverified
a3ab92601f5a0a701833cbc56f4cc49490fc4fb3

Fill-with NaN () not works for non-intervals

committed 10 years ago

README

The README file for this repository.

icoshift

A versatile tool for the rapid alignment of 1D NMR spectra

This package is a Python implementation of the icoshift algorithm as described by Francesco Savorani and Giorgio Tomasi. It uses correlation shifting of spectral intervals and employs an FFT engine that aligns all spectra simultaneously.

The Matlab algorithm is demonstrated to be faster than similar methods found in the literature making full-resolution alignment of large datasets feasible and thus avoiding down-sampling steps such as binning. The algorithm uses missing values as a filling alternative in order to avoid spectral artifacts at the segment boundaries.

It has been converted to Python using SMOP followed by hand re-coding using test datasets to check output at various steps. Better (and more complicated) test cases to come.

The interface remains identical to the Matlab version at present.

Here Be Dragons

Conversion from one programming language to another is not straightforward. Particularly problematic from MATLAB to Python is the change from zero-based to one-based indexing. The implementation has been fixed to work and produce comparable output for all inputs, however issues with some datasets or settings may remain. Full tests to confirm equivalence to the MATLAB algorithm to follow.

But it works.

Thanks

Thanks to Francesco Savorani and Giorgio Tomasi for the original neat and well documented algorithm.