Redes neuronales profundas para analizar datos en el dominio del tiempo de RMN. Ver:
Esta es la versión corta de este README. Para obtener más detalles, consulte las explicaciones más detalladas a continuación.
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
Primero, clona el repositorio:
git clone https://github.com/gogulan-k/FID-Net.git
La forma más sencilla de obtener un entorno de trabajo con todos los paquetes que FID-Net necesita es utilizar conda o mamba y el archivo Environment.yml proporcionado:
cd FID-Net
mamba env update -f environment.yml
y activar el entorno:
mamba activate fidnet
La instalación del entorno también instala el paquete "fidnet", lo que hace que la herramienta de línea de comandos fidnet esté disponible (ver más abajo).
Los pesos de las redes neuronales no están incluidos en este paquete de Python, pero se descargarán sobre la marcha cuando sea necesario.
Si desea activar manualmente la descarga de los pesos para todos los modelos diferentes a la vez, escriba:
fidnet download-weights
Los pesos se descargan de forma predeterminada en el directorio gitignored:
/data/weights
Puede cambiar configuraciones como estas agregando un archivo .env o configurando variables de entorno que especifiquen FIDNET_DATA_DIR o FIDNET_WEIGHTS_DIR:
# .env
FIDNET_WEIGHTS_DIR=/path/to/directory/with/weights.hd5
Para echar un vistazo a todas estas configuraciones, escriba:
fidnet settings
Si tiene un entorno de trabajo (y NMRPipe instalado, si no, consulte la siguiente sección), puede probar si todo funciona ejecutando todos los ejemplos a la vez:
fidnet run-examples
Esto descargará datos de ejemplo y ejecutará todas las diferentes funciones de FID-Net (excepto el desacoplador 3D HNCA, que tarda mucho más en ejecutarse). Si solo desea descargar los datos de ejemplo, sin realizar el procesamiento por parte de los modelos:
fidnet download-example-data
NMRPipe no se puede instalar usando conda. Si aún no lo tiene instalado, puede utilizar el script proporcionado para instalarlo.
chmod +x install_nmrpipe.sh
install_nmrpipe.sh
NMRPipe brinda algunas instrucciones sobre cómo editar su .cshrc. Se verá así:
if (-e < REPO_DIR > /bin/NMRPipe/com/nmrInit.linux212_64.com) then
source < REPO_DIR > /bin/NMRPipe/com/nmrInit.linux212_64.com
endif
Siga esas instrucciones para poder encontrar el comando NMRPipe.
Consulte --help en la herramienta de línea de comando. Cada comando individual tiene su propia ayuda, que explica cuáles son los 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: el desacoplador sólo puede funcionar con hasta 512 puntos complejos en la dimensión 13C. Los espectros que contengan más puntos se truncarán en 512 puntos complejos.
En la carpeta de ejemplo se proporciona un ejemplo de espectro en fase antifase (AP-IP) de T4L99A (test.ft1).
La entrada al DNN debe estar en formato nmrPipe. Si utiliza un espectrómetro Bruker, el archivo FID sin formato (ser) debe convertirse al formato nmrpipe utilizando el indicador DMX para que el desacoplamiento FID-Net se realice correctamente.
Antes de ingresar a FID-Net, la dimensión directa del espectro se desfasa pero la parte imaginaria no se elimina. Luego, el espectro se transpone, se apodiza, se llena con ceros, se escalona y se transforma de Fourier en la dimensión indirecta. Para obtener mejores resultados, se debe evitar el llenado excesivo de ceros en la dimensión indirecta. Normalmente usaríamos 'ZF -auto' en nmrPipe. A continuación, el espectro debería transponerse antes de su entrada en FID-Net.
La entrada al DNN debe ser un interferograma 2D en fase (es decir, procesado en la dimensión indirecta pero no en la dimensión directa como se describe anteriormente).
Luego, la salida del DNN puede procesarse (apodizarse, completarse con ceros, transformarse de Fourier y eliminarse la parte imaginaria) para obtener el resultado final. Se proporciona un ejemplo (final_proc.com) en la carpeta de ejemplo.
(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: el desacoplador 2D CON solo puede funcionar con hasta 512 puntos complejos en la dimensión 13C. Los espectros que contengan más puntos se truncarán en 512 puntos complejos.
En la carpeta de ejemplos se proporciona un ejemplo de espectro en fase de ubiquitina (test001.ft1).
La entrada al DNN debe estar en formato nmrPipe. Si utiliza un espectrómetro Bruker, el archivo FID sin formato (ser) debe convertirse al formato nmrpipe utilizando el indicador DMX para que el desacoplamiento FID-Net se realice correctamente.
Antes de ingresar a FID-Net, la dimensión directa del espectro se desfasa pero la parte imaginaria no se elimina. Luego, el espectro se transpone, se apodiza, se llena con ceros, se escalona y se transforma de Fourier en la dimensión indirecta. Para obtener mejores resultados, se debe evitar el llenado excesivo de ceros en la dimensión indirecta. Normalmente usaríamos 'ZF -auto' en nmrPipe. A continuación, el espectro debería transponerse antes de su entrada en FID-Net.
La entrada al DNN debe ser un interferograma 2D en fase (es decir, procesado en la dimensión indirecta pero no en la dimensión directa como se describe anteriormente). Si los datos son 3D, se deben convertir a un conjunto de planos 2D utilizando la utilidad pipe2xyz o similar. Se proporciona una entrada de ejemplo en la carpeta de ejemplo (test001.ft1).
Luego, la salida del DNN puede procesarse (apodizarse, completarse con ceros, transformarse de Fourier y eliminarse la parte imaginaria) para obtener el resultado final. Se proporciona un ejemplo (final_proc.com) en la carpeta de ejemplo.
(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: el desacoplador 2D 13Ct-13Cp sólo puede funcionar con hasta 512 puntos complejos en la dimensión 13C. Los espectros que contengan más puntos se truncarán en 512 puntos complejos.
En la carpeta de ejemplos se proporciona un ejemplo de espectro en fase de ubiquitina (test001.ft1).
La entrada al DNN debe estar en formato nmrPipe. Si utiliza un espectrómetro Bruker, el archivo FID sin formato (ser) debe convertirse al formato nmrpipe utilizando el indicador DMX para que el desacoplamiento FID-Net se realice correctamente.
Antes de ingresar a FID-Net, la dimensión directa del espectro se desfasa pero la parte imaginaria no se elimina. Luego, el espectro se transpone, se apodiza, se llena con ceros, se escalona y se transforma de Fourier en la dimensión indirecta. Para obtener mejores resultados, se debe evitar el llenado excesivo de ceros en la dimensión indirecta. Normalmente usaríamos 'ZF -auto' en nmrPipe. A continuación, el espectro debería transponerse antes de su entrada en FID-Net.
La entrada al DNN debe ser un interferograma 2D en fase (es decir, procesado en la dimensión indirecta pero no en la dimensión directa como se describe anteriormente). Si los datos son 3D, se deben convertir a un conjunto de planos 2D utilizando la utilidad pipe2xyz o similar. Se proporciona una entrada de ejemplo en la carpeta de ejemplo (test001.ft1).
Luego, la salida del DNN puede procesarse (apodizarse, completarse con ceros, transformarse de Fourier y eliminarse la parte imaginaria) para obtener el resultado final. Se proporciona un ejemplo (final_proc.com) en la carpeta de ejemplo.
(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 es para reconstruir espectros de RMN NUS 2D utilizando la arquitectura FID-Net. Para utilizar el código, se debe descargar el archivo que contiene los pesos de la red entrenada.
La salida de la red es un archivo nmrPipe con la dimensión indirecta reconstruida en el dominio del tiempo. La dimensión indirecta ahora se puede procesar (apodizada, llena de ceros, en fase y transformada de Fourier) para producir el espectro reconstruido final. El análisis también genera std.ft2, lo que proporciona una medida de confianza en los resultados. Esto también está en formato nmrPipe y está preprocesado y transformado por Fourier según los parámetros predeterminados. Si son incorrectos, se puede aplicar una transformada de Hilbert y una transformada inversa de Fourier para devolverlo al dominio del tiempo antes del reprocesamiento.
Hay un archivo de ejemplo para HDAC en la carpeta de ejemplos, junto con el programa de muestreo.
(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 sirve para desacoplar los espectros 3D HNCA y HN (COCA) utilizando la arquitectura FID-Net. Nota: el desacoplador 3D HNCA solo puede funcionar con hasta 256 puntos complejos en la dimensión 13C. Los espectros que contengan más puntos se truncarán en 256 puntos complejos.
(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 sirve para mejorar la resolución de los espectros de proteínas a partir de proteínas 13C-1H uniformes. El código requiere dos DNN basados en la arquitectura FID-Net. La primera red elimina un acoplamiento escalar 13C-13C y agudiza los picos en la dimensión 13C. La segunda red agudiza los picos en la dimensión 1H.
La carpeta de ejemplo contiene datos para HDAC8 con la etiqueta uniforme 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. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Puede instalar ganchos de confirmación previa que realizan algunas comprobaciones antes de confirmar su código:
pip install -e ".[dev]"
pre-commit install