четверг, 22 апреля 2010 г.

Преобразование Bruker 1r в текстовый файл

Исходные файлы Bruker и fid и 1r двоичные и смотреть их можно только в специальных ЯМР программах. А если надо сделать какой-нибудь специальный анализ, например, деконволюцию участка спектра, то нужно преобразовать (конвертировать) формат bruker в обычный текстовый файл. И затем исследовать его обычными программами (gnuplot, scilab).

В Линукс есть встроенная команда od (octal dump):
od -An -i -v -w4 1r > 1r.txt

Полученный файл содержит только интенсивности сигнала (только значения по Y). Как получить значения X:

В файле proc (в той же дирректории, в которой лежит и 1r) есть параметры $SI и $XDIM. Первый это число точек в 1r. Его можно получить также командой:
cat 1r.txt | wc -l

Как правильно назвать $XDIM я не знаю. Но если разделить $SI на $XDIM то получится ширина спектра в ppm. Соответственно 1/$XDIM это число ppm на одну точку fid.

Теперь значения переменных нужно подставить в команду
cat 1r.txt | awk '{print ($SI-NR)*(1/$XDIM)-$Sdvig,$1}' > 1r.csv

Здесь NR - порядковый номер строки. $SI - NR - задает правильное направление шкалы ppm. $Sdvig - переменная, которая нужна, что-бы правильно расположить спектр относительно стандарта (например, метанола). В моем случае $Sdvig бы равен примерно 1.

Внимание. Направление шкалы в gnuplot (0->10) отличается от направления шкалы в ЯМР программе (10->0).

Или все команды вместе:
od -An -i -v -w4 1r > 1r.txt; SI=$(cat 1r.txt | wc -l); XDIM=$(cat proc | grep XDIM | awk '{print $2}'); cat 1r.txt | awk -v SI=$SI -v XDIM=$XDIM '{print (SI-NR)*(1/XDIM)-1,$1}' > 1r.csv