Глубокие нейронные сети для анализа данных ЯМР во временной области. Видеть:
Это краткая версия этого README. Более подробную информацию см. в более подробных объяснениях ниже.
git clone https://github.com/gogulan-k/FID-Net.git
cd FID-Net
# Following two command only if you don't have NMRPipe installed:
chmod +x install_nmrpipe.sh
install_nmrpipe.sh
mamba env update -f environment.yml
mamba activate fidnet
fidnet run-examples
Сначала клонируйте репозиторий:
git clone https://github.com/gogulan-k/FID-Net.git
Самый простой способ получить рабочую среду со всеми пакетами, которые нужны FID-Net, — использовать conda или mamba и предоставленный файл Environment.yml:
cd FID-Net
mamba env update -f environment.yml
и активируем среду:
mamba activate fidnet
При установке среды также устанавливается пакет «fidnet», что делает доступным инструмент командной строки fidnet (см. ниже).
Веса нейронных сетей не включены в этот пакет Python, но будут загружены на лету при необходимости.
Если вы хотите вручную запустить загрузку весов для всех моделей одновременно, введите:
fidnet download-weights
Веса по умолчанию загружаются в каталог gitignored:
/data/weights
Вы можете изменить подобные настройки, добавив файл .env или установив переменные среды, указав FIDNET_DATA_DIR или FIDNET_WEIGHTS_DIR:
# .env
FIDNET_WEIGHTS_DIR=/path/to/directory/with/weights.hd5
Чтобы просмотреть все такие настройки, введите:
fidnet settings
Если у вас есть рабочая среда (и установлен NMRPipe, если не см. следующий раздел), вы можете проверить, работает ли все, запустив все примеры одновременно:
fidnet run-examples
При этом будут загружены примеры данных, запущены все различные функции FID-Net (кроме 3D-развязки HNCA, запуск которой занимает намного больше времени). Если вы просто хотите загрузить данные примера, не выполняя обработку моделями:
fidnet download-example-data
NMRPipe невозможно установить с помощью conda. Если он у вас еще не установлен, вы можете использовать предоставленный скрипт для его установки.
chmod +x install_nmrpipe.sh
install_nmrpipe.sh
NMRPipe дает несколько инструкций о том, как редактировать ваш .cshrc. Это будет выглядеть примерно так:
if (-e < REPO_DIR > /bin/NMRPipe/com/nmrInit.linux212_64.com) then
source < REPO_DIR > /bin/NMRPipe/com/nmrInit.linux212_64.com
endif
Следуйте этим инструкциям, чтобы можно было найти команду NMRPipe.
Пожалуйста, обратитесь к --help в инструменте командной строки. Каждая отдельная команда имеет собственную справку, объясняющую, что такое входные аргументы.
(fidnet) ➜ ~ fidnet --help
Usage: fidnet [OPTIONS] COMMAND [ARGS]...
Deep Neural Networks for Analysing NMR time domain data.
https://github.com/gogulan-k/FID-Net
╭─ Options ───────────────────────────────────────────────────────────────────╮
│ --install-completion Install completion for the current shell. │
│ --show-completion Show completion for the current shell, to │
│ copy it or customize the installation. │
│ --help Show this message and exit. │
╰─────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ──────────────────────────────────────────────────────────────────╮
│ ca_detect FID-Net 2D CA detect │
│ con_decouple FID-Net 2D CON decoupling │
│ ctcp_decouple FID-Net 2D CTCP decoupling │
│ methyl FID-Net Decouple and improve resolution │
│ of spectra for uniformly 13C-1H labelled │
│ proteins. │
│ hnca FID-Net 3D HNCA decoupling. │
│ reconstruct FID-Net 2D Non-Uniform Sampling (NUS) reconstruction |
| aromatic FID-Net2 for spectra for Aromatic Sidechains │
│ run-examples Run all the examples in one go. │
│ download-example-data Download example data to try out the different │
│ FID-Net functions. │
│ download-weights Download the weights for all FID-Net models. Running │
│ this is not strictly necessary as the weights are │
│ downloaded on the fly for individual models when │
│ they are not present yet. │
│ settings │
│ version Show the version of the nucleotides library. │
╰─────────────────────────────────────────────────────────────────────────────╯
Thanks !
(fidnet) ➜ ~ fidnet ca_detect --help
Usage: fidnet ca_detect [OPTIONS]
FID-Net 2D CA detect
╭─ Options ───────────────────────────────────────────────────────────────────────╮
│ * --infile PATH Help text in the original was the same as for │
│ con_decouple │
│ [default: None] │
│ [required] │
│ --outfile PATH Path to the output file. │
│ [default: fidnet_ca_detect.ft1] │
│ --help Show this message and exit. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Примечание: развязчик может работать только с 512 комплексными точками в измерении 13C. Спектры, содержащие больше точек, будут усечены до 512 комплексных точек.
Пример противофазного синфазного (AP-IP) спектра T4L99A (test.ft1) представлен в папке с примерами.
Входные данные для DNN должны быть в формате nMRPipe. При использовании спектрометра Bruker необработанный файл FID (ser) необходимо преобразовать в формат nmrpipe с использованием флага DMX, чтобы развязка FID-Net работала правильно.
Перед вводом в FID-Net прямой размер спектра фазируется, но мнимая часть не удаляется. Затем спектр транспонируется, аподизируется, заполняется нулями, фазируется и преобразуется Фурье в косвенном измерении. Для достижения наилучших результатов следует избегать чрезмерного заполнения нулями в косвенном измерении. Обычно мы просто используем «ZF -auto» в nMRPipe. Затем спектр следует транспонировать перед вводом в FID-Net.
Входные данные для DNN должны представлять собой двумерную синфазную интерферограмму (т. е. обрабатываться в косвенном измерении, а не в прямом измерении, как описано выше).
Затем выходные данные DNN можно обработать (аподизировать, заполнить нулями, преобразовать Фурье и удалить мнимую часть), чтобы получить окончательный результат. Пример (final_proc.com) находится в папке примеров.
(fidnet) ➜ ~ fidnet con_decouple --help
Usage: fidnet con_decouple [OPTIONS]
FID-Net 2D CON decoupling
╭─ Options ───────────────────────────────────────────────────────────────────────╮
│ * --infile PATH Input spectra. This is a 2D in phase CON spectra with │
│ the 13C dimension in the time domain. The 13C │
│ dimension should be phased but the imaginary part │
│ retained and should not be apodized, zero-filled or │
│ Fourier transformed. The 15N dimension should be │
│ apodized, zero-filled, phased (the imaginary part │
│ deleted) then Fourier transformed. The order of the │
│ input dimensions must be 15N, 13C. │
│ [default: None] │
│ [required] │
│ --outfile PATH Path to the output file. │
│ [default: fidnet_con_decoupled.ft1] │
│ --help Show this message and exit. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Примечание: развязчик 2D CON может работать только с 512 комплексными точками в измерении 13C. Спектры, содержащие больше точек, будут усечены до 512 комплексных точек.
Пример синфазного спектра убиквитина (test001.ft1) представлен в папке примеров.
Входные данные для DNN должны быть в формате nMRPipe. При использовании спектрометра Bruker необработанный файл FID (ser) необходимо преобразовать в формат nmrpipe с использованием флага DMX, чтобы развязка FID-Net работала правильно.
Перед вводом в FID-Net прямой размер спектра фазируется, но мнимая часть не удаляется. Затем спектр транспонируется, аподизируется, заполняется нулями, фазируется и преобразуется Фурье в косвенном измерении. Для достижения наилучших результатов следует избегать чрезмерного заполнения нулями в косвенном измерении. Обычно мы просто используем «ZF -auto» в nMRPipe. Затем спектр следует транспонировать перед вводом в FID-Net.
Входные данные для DNN должны представлять собой двумерную синфазную интерферограмму (т. е. обрабатываться в косвенном измерении, а не в прямом измерении, как описано выше). Если данные трехмерные, их необходимо преобразовать в набор двухмерных плоскостей с помощью утилиты Pipe2xyz или аналогичной. Пример входных данных находится в папке примеров (test001.ft1).
Затем выходные данные DNN можно обработать (аподизировать, заполнить нулями, преобразовать Фурье и удалить мнимую часть), чтобы получить окончательный результат. Пример (final_proc.com) находится в папке примеров.
(fidnet) ➜ ~ fidnet ctcp_decouple --help
Usage: fidnet ctcp_decouple [OPTIONS]
FID-Net 2D CTCP decoupling
╭─ Options ───────────────────────────────────────────────────────────────────────╮
│ * --infile PATH Input spectra. This is a 2D in-phase Ct-Cp spectra │
│ with the 13Ct dimension in the time domain. The 13Ct │
│ dimension should be phased but the imaginary part │
│ retained and should not be apodized, zero-filled or │
│ Fourier transformed. The 13Cp dimension should be │
│ apodized, zero-filled, phased (the imaginary part │
│ deleted) then Fourier transformed. The order of the │
│ input dimensions must be 13Cp, 13Ct. │
│ [default: None] │
│ [required] │
│ --outfile PATH Path to the output file. │
│ [default: fidnet_ctcp_decoupled.ft1] │
│ --help Show this message and exit. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Примечание. 2D-развязчик 13Ct-13Cp может работать только с 512 комплексными точками в измерении 13C. Спектры, содержащие больше точек, будут усечены до 512 комплексных точек.
Пример синфазного спектра убиквитина (test001.ft1) представлен в папке примеров.
Входные данные для DNN должны быть в формате nMRPipe. При использовании спектрометра Bruker необработанный файл FID (ser) необходимо преобразовать в формат nmrpipe с использованием флага DMX, чтобы развязка FID-Net работала правильно.
Перед вводом в FID-Net прямой размер спектра фазируется, но мнимая часть не удаляется. Затем спектр транспонируется, аподизируется, заполняется нулями, фазируется и преобразуется Фурье в косвенном измерении. Для достижения наилучших результатов следует избегать чрезмерного заполнения нулями в косвенном измерении. Обычно мы просто используем «ZF -auto» в nMRPipe. Затем спектр следует транспонировать перед вводом в FID-Net.
Входные данные для DNN должны представлять собой двумерную синфазную интерферограмму (т. е. обрабатываться в косвенном измерении, а не в прямом измерении, как описано выше). Если данные трехмерные, их необходимо преобразовать в набор двухмерных плоскостей с помощью утилиты Pipe2xyz или аналогичной. Пример входных данных находится в папке примеров (test001.ft1).
Затем выходные данные DNN можно обработать (аподизировать, заполнить нулями, преобразовать Фурье и удалить мнимую часть), чтобы получить окончательный результат. Пример (final_proc.com) находится в папке примеров.
(fidnet) ➜ ~ fidnet reconstruct --help
Usage: fidnet reconstruct [OPTIONS]
FID-Net 2D Non-Uniform Sampling (NUS) reconstruction
╭─ Options ───────────────────────────────────────────────────────────────────────╮
│ * --infile PATH this is the measured 2D │
│ non-uniformly sampled spectra. │
│ It should be processed in the │
│ direct dimension, phased and │
│ transposed. The indirect │
│ dimension should not be │
│ processed in any way. The │
│ unsampled points in the │
│ indirect dimension should not │
│ be replaced with zeros (for │
│ example by using the nusExpand │
│ tool) this is taken care of by │
│ the program itself. The │
│ maximum number of complex │
│ points in the indirect │
│ dimension that can be included │
│ in the network is 256. │
│ Thespectrum will be truncated │
│ after this. │
│ [default: None] │
│ [required] │
│ * --sampling-schedule PATH this is the sampling schedule │
│ used. This is simply a list │
│ ofintegers (oneinteger per │
│ line) giving the complex │
│ points that are measured in │
│ the NUS experiment. │
│ [default: None] │
│ [required] │
│ * --max-points INTEGER this is the number of complex │
│ points in the final output. │
│ I.e.the sparsity is given by │
│ the number of values in the │
│ samplingschedule divided by │
│ this value. │
│ [default: None] │
│ [required] │
│ --outfile PATH name of the output file │
│ [default: │
│ fidnet_nus_reconstructed.ft1] │
│ --f1180 --no-f1180 f1180 flag (y/n) only │
│ important for matplotlib │
│ output and │
│ fidnet_reconstructed.ft2 │
│ [default: f1180] │
│ --shift --no-shift frequency shift flag (y/n) │
│ only important for matplotlib │
│ output and std.ft2 │
│ [default: no-shift] │
│ --help Show this message and exit. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Этот код предназначен для восстановления 2D-спектров NUS ЯМР с использованием архитектуры FID-Net. Чтобы использовать код, необходимо скачать файл, содержащий веса обученной сети.
Результатом работы сети является файл nMRPipe с косвенным измерением, восстановленным во временной области. Косвенное измерение теперь может быть обработано (аподизировано, заполнено нулями, поэтапно и преобразовано Фурье) для получения окончательного реконструированного спектра. В результате анализа также выводится файл std.ft2, что обеспечивает меру уверенности в результатах. Это также в формате nMRPipe, предварительно обработанное и преобразованное Фурье в соответствии с параметрами по умолчанию. Если они неверны, можно применить преобразование Гильберта и обратное преобразование Фурье, чтобы вернуть это во временную область перед повторной обработкой.
В папке примеров находится файл примера для HDAC вместе с графиком выборки.
(fidnet) ➜ ~ fidnet hnca --help
Usage: fidnet hnca [OPTIONS]
FID-Net 3D HNCA decoupling.
╭─ Options ───────────────────────────────────────────────────────────────────────╮
│ * --infile PATH Input spectra. This is a 3D HNCA orHN(CO)CA spectra │
│ with the 13C dimension in the time domain.The 15N and │
│ 1H dimensions should be phased and Fourier │
│ transformed.The order of the input dimensions must be │
│ 1H,15N, 13C. │
│ [default: None] │
│ [required] │
│ --outfile PATH out file [default: fidnet_hnca_decoupled.ft2] │
│ --help Show this message and exit. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Этот код предназначен для разделения 3D-спектров HNCA и HN(COCA) с использованием архитектуры FID-Net. Примечание: развязчик 3D HNCA может работать только с 256 комплексными точками в измерении 13C. Спектры, содержащие больше точек, будут усечены до 256 комплексных точек.
(fidnet) ➜ ~ fidnet methyl --help
Usage: fidnet methyl [OPTIONS]
FID-Net Decouple and improve resolution of spectra for uniformly 13C-1H labelled
proteins.
╭─ Options ───────────────────────────────────────────────────────────────────────╮
│ * --infile PATH Input spectra. This is a 2D 13C-1Hspectra │
│ (time domain data) fora uniformly labelled │
│ 13C-1H labelled protein.If using literally │
│ ' example ' ,an example file is used │
│ [default: None] │
│ [required] │
│ --outdir PATH folder where resultswill be saved. │
│ [default: fidnet_out] │
│ --outfile PATH filename for finalprocessed spectrum. │
│ [default: fidnet_methyl_CH.ft2] │
│ --min-1h FLOAT minimum 1H ppm [default: -1.0] │
│ --max-1h FLOAT maximum 1H ppm [default: 2.5] │
│ --p0 FLOAT 1H phase correction [default: 0.0] │
│ --alt --no-alt NMRPipe: dimension is left/right swapped │
│ [default: no-alt] │
│ --neg --no-neg NMRPipe: dimension is reversed │
│ [default: no-neg] │
│ --help Show this message and exit. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Этот код предназначен для улучшения разрешения белковых спектров белков с однородной структурой 13C-1H. Для кода требуются два DNN на основе архитектуры FID-Net. Первая сеть удаляет одну скалярную связь 13C-13C и обостряет пики в измерении 13C. Вторая сеть обостряет пики в измерении 1H.
Папка примера содержит данные для одинаково маркированного 13C-1H HDAC8.
(fidnet) ➜ ~ fidnet aromatic --help
Usage: fidnet aromatic [OPTIONS]
FID-Net2 ransforms NMR spectra recorded on simple uniformly 13C labelled samples to
yield high-quality 1H-13C correlation spectra of the aromatic side chains.
Spectra should be recorded with the dedicated pulse programme
╭─ Options ───────────────────────────────────────────────────────────────────────╮
│ * --infile PATH Input spectra. This should be a pseudo-3D │
│ NMR pipe file that has been recorded using │
│ the dedicated pulse sequence (see folder) │
│ │
│ [default: None] │
│ [required] │
│ --outfile PATH filename for final processed spectrum. │
│ [default: aromatic_output.ft2] │
│ --UseGPU BOOL True to use GPU. │
| [default: True] |
│ --GPUIDX INT GPU number to use │
| [default: None] |
│ --offset1h FLOAT Set the offset for the sine-squared window |
| function in the 1H dimension. Default is |
| 0.40, which was used during training │
│ [default: 0.4] |
│ --offset13c FLOAT Set the offset for the sine-squared window |
| function in the 1H dimension. Default is |
| 0.40, which was used during training │
│ [default: 0.4] |
│ --help Show this message and exit. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Вы можете установить перехватчики предварительной фиксации, которые выполняют некоторые проверки перед фиксацией кода:
pip install -e ".[dev]"
pre-commit install