GitXplorerGitXplorer
m

icoshift

public
17 stars
10 forks
3 issues

Commits

List of commits on branch master.
Unverified
0be8e8f714c1842584c9d17835811152a407a57a

Pad to 2** before FFT for huge performance increase: http://stackoverflow.com/questions/21161033/strange-numpy-fft-performance

committed 10 years ago
Unverified
c4d7e3ae30c827e6a0a7bd60aae6464f5b6da639

Coshift preprocessing flag

committed 10 years ago
Unverified
ecd44ba75eca1ba9de721277d1482fe564ac58bf

Move fill_with_previous to keyword parameter;

committed 10 years ago
Unverified
2491fac6c2d982f1cf1429ad97dde23f50c5f0c7

Average2 fix

committed 10 years ago
Unverified
ae455f2140487bedcdd712f544c50b77f34eaa94

Average/median case fixed (variable name clash on enumerate lists); various other fixes

committed 10 years ago
Unverified
6291a41eff6225cfdf63ce838177630a7e39ba2c

Fix more MATLAB code weirdness

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.