Redes Neurais Profundas para Análise de Dados de NMR no Domínio do Tempo. Ver:
Esta é a versão resumida deste README. Para mais detalhes, veja explicações mais detalhadas abaixo.
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
Primeiro, clone o repositório:
git clone https://github.com/gogulan-k/FID-Net.git
A maneira mais fácil de obter um ambiente de trabalho com todos os pacotes que o FID-Net precisa, use conda ou mamba e o arquivo Environment.yml fornecido:
cd FID-Net
mamba env update -f environment.yml
e ativar o ambiente:
mamba activate fidnet
A instalação do ambiente também instala o pacote "fidnet", disponibilizando a ferramenta de linha de comando fidnet (veja abaixo).
Os pesos das redes neurais não estão incluídos neste pacote python, mas serão baixados instantaneamente quando necessário.
Se você deseja acionar manualmente o download dos pesos para todos os modelos diferentes de uma só vez, digite:
fidnet download-weights
Os pesos são baixados por padrão no diretório gitignored:
/data/weights
Você pode alterar configurações como estas adicionando um arquivo .env ou definindo variáveis de ambiente especificando FIDNET_DATA_DIR ou FIDNET_WEIGHTS_DIR:
# .env
FIDNET_WEIGHTS_DIR=/path/to/directory/with/weights.hd5
Para dar uma olhada em todas essas configurações, digite:
fidnet settings
Se você possui um ambiente de trabalho (e o NMRPipe instalado, caso contrário, consulte a próxima seção), você pode testar se as coisas estão funcionando executando todos os exemplos de uma vez:
fidnet run-examples
Isso fará o download de dados de exemplo e executará todas as diferentes funções do FID-Net (exceto o desacoplador 3D HNCA, que leva muito mais tempo para ser executado). Caso queira apenas baixar os dados de exemplo, sem fazer o processamento pelos modelos:
fidnet download-example-data
NMRPipe não pode ser instalado usando conda. Se ainda não o instalou, você pode usar o script fornecido para instalá-lo.
chmod +x install_nmrpipe.sh
install_nmrpipe.sh
NMRPipe fornece algumas instruções sobre como editar seu .cshrc. Será algo assim:
if (-e < REPO_DIR > /bin/NMRPipe/com/nmrInit.linux212_64.com) then
source < REPO_DIR > /bin/NMRPipe/com/nmrInit.linux212_64.com
endif
Siga essas instruções para que o comando NMRPipe possa ser encontrado.
Consulte --help na ferramenta de linha de comando. Cada comando individual tem sua própria ajuda, explicando quais são os argumentos de entrada.
(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. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Nota: o desacoplador só pode trabalhar com até 512 pontos complexos na dimensão 13C. Os espectros contendo mais pontos do que isso serão truncados em 512 pontos complexos.
Um exemplo de espectro antifásico em fase (AP-IP) de T4L99A (test.ft1) é fornecido na pasta de exemplo.
A entrada para o DNN deve estar no formato nmrPipe. Se estiver usando um espectrômetro Bruker, o arquivo FID bruto (ser) deve ser convertido para o formato nmrpipe usando o sinalizador DMX para que o desacoplamento FID-Net funcione corretamente.
Antes da entrada na FID-Net, a dimensão direta do espectro é faseada, mas a parte imaginária não é eliminada. O espectro é então transposto, apodizado, preenchido com zeros, faseado e transformado em Fourier na dimensão indireta. Para obter melhores resultados, deve-se evitar o preenchimento excessivo de zeros na dimensão indireta. Normalmente usaríamos apenas 'ZF -auto' em nmrPipe. O espectro deverá então ser transposto antes da entrada na FID-Net.
A entrada para a DNN deve ser um interferograma 2D em fase (ou seja, processado na dimensão indireta, mas não na dimensão direta, conforme descrito acima).
A saída do DNN pode então ser processada (apodizada, preenchida com zero, transformada de Fourier e a parte imaginária excluída) para fornecer o resultado final. Um exemplo (final_proc.com) é fornecido na pasta de exemplo.
(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. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Nota: o desacoplador 2D CON só pode trabalhar com até 512 pontos complexos na dimensão 13C. Os espectros contendo mais pontos do que isso serão truncados em 512 pontos complexos.
Um exemplo de espectro em fase de ubiquitina (test001.ft1) é fornecido na pasta de exemplo.
A entrada para o DNN deve estar no formato nmrPipe. Se estiver usando um espectrômetro Bruker, o arquivo FID bruto (ser) deve ser convertido para o formato nmrpipe usando o sinalizador DMX para que o desacoplamento FID-Net funcione corretamente.
Antes da entrada na FID-Net, a dimensão direta do espectro é faseada, mas a parte imaginária não é eliminada. O espectro é então transposto, apodizado, preenchido com zeros, faseado e transformado em Fourier na dimensão indireta. Para obter melhores resultados, deve-se evitar o preenchimento excessivo de zeros na dimensão indireta. Normalmente usaríamos apenas 'ZF -auto' em nmrPipe. O espectro deverá então ser transposto antes da entrada na FID-Net.
A entrada para a DNN deve ser um interferograma 2D em fase (ou seja, processado na dimensão indireta, mas não na dimensão direta conforme descrito acima). Se os dados forem 3D, eles deverão ser convertidos para um conjunto de planos 2D usando o utilitário pipe2xyz ou similar. Uma entrada exemplar é fornecida na pasta de exemplo (test001.ft1).
A saída do DNN pode então ser processada (apodizada, preenchida com zero, transformada de Fourier e a parte imaginária excluída) para fornecer o resultado final. Um exemplo (final_proc.com) é fornecido na pasta de exemplo.
(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. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Nota: o desacoplador 2D 13Ct-13Cp só pode trabalhar com até 512 pontos complexos na dimensão 13C. Os espectros contendo mais pontos do que isso serão truncados em 512 pontos complexos.
Um exemplo de espectro em fase de ubiquitina (test001.ft1) é fornecido na pasta de exemplo.
A entrada para o DNN deve estar no formato nmrPipe. Se estiver usando um espectrômetro Bruker, o arquivo FID bruto (ser) deve ser convertido para o formato nmrpipe usando o sinalizador DMX para que o desacoplamento FID-Net funcione corretamente.
Antes da entrada na FID-Net, a dimensão direta do espectro é faseada, mas a parte imaginária não é eliminada. O espectro é então transposto, apodizado, preenchido com zeros, faseado e transformado em Fourier na dimensão indireta. Para obter melhores resultados, deve-se evitar o preenchimento excessivo de zeros na dimensão indireta. Normalmente usaríamos apenas 'ZF -auto' em nmrPipe. O espectro deverá então ser transposto antes da entrada na FID-Net.
A entrada para a DNN deve ser um interferograma 2D em fase (ou seja, processado na dimensão indireta, mas não na dimensão direta conforme descrito acima). Se os dados forem 3D, eles deverão ser convertidos para um conjunto de planos 2D usando o utilitário pipe2xyz ou similar. Uma entrada exemplar é fornecida na pasta de exemplo (test001.ft1).
A saída do DNN pode então ser processada (apodizada, preenchida com zero, transformada de Fourier e a parte imaginária excluída) para fornecer o resultado final. Um exemplo (final_proc.com) é fornecido na pasta de exemplo.
(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. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Este código é para reconstruir espectros de NMR 2D NUS usando a arquitetura FID-Net. Para utilizar o código, deve-se baixar o arquivo contendo os pesos da rede treinada.
A saída da rede é um arquivo nmrPipe com a dimensão indireta reconstruída no domínio do tempo. A dimensão indireta pode agora ser processada (apodizada, preenchida com zero, faseada e transformada de Fourier) para produzir o espectro reconstruído final. A análise também gera std.ft2, fornecendo uma medida de confiança nos resultados. Também está no formato nmrPipe e é pré-processado e transformado em Fourier de acordo com os parâmetros padrão. Se estes estiverem incorretos, uma transformada de Hilbert e uma transformada inversa de Fourier podem ser aplicadas para colocar isso de volta no domínio do tempo antes do reprocessamento.
Há um arquivo de exemplo para HDAC na pasta de exemplo, junto com o cronograma de amostragem.
(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. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Este código é para desacoplar espectros 3D HNCA e HN (COCA) usando a arquitetura FID-Net. Nota: o desacoplador 3D HNCA só pode trabalhar com até 256 pontos complexos na dimensão 13C. Os espectros contendo mais pontos do que isso serão truncados em 256 pontos complexos.
(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. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Este código serve para melhorar a resolução dos espectros de proteínas de proteínas uniformemente 13C-1H. O código requer dois DNNs baseados na arquitetura FID-Net. A primeira rede remove um acoplamento escalar 13C-13C e aumenta a nitidez dos picos na dimensão 13C. A segunda rede aguça os picos na dimensão 1H.
A pasta de exemplo contém dados para HDAC8 uniformemente rotulado como 13C-1H.
(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. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Você pode instalar ganchos de pré-confirmação que fazem algumas verificações antes de submeter seu código:
pip install -e ".[dev]"
pre-commit install