Réseaux de neurones profonds pour l'analyse des données du domaine temporel RMN. Voir:
Ceci est la version courte de ce README. Pour plus de détails, voir les explications plus détaillées ci-dessous.
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
Tout d'abord, clonez le référentiel :
git clone https://github.com/gogulan-k/FID-Net.git
Le moyen le plus simple d'obtenir un environnement de travail avec tous les packages dont FID-Net a besoin, utilisez conda ou mamba et le fichier Environment.yml fourni :
cd FID-Net
mamba env update -f environment.yml
et activer l'environnement :
mamba activate fidnet
L'installation de l'environnement installe également le package "fidnet", rendant l'outil de ligne de commande fidnet disponible (voir ci-dessous).
Les poids des réseaux de neurones ne sont pas inclus dans ce package python, mais seront téléchargés à la volée en cas de besoin.
Si vous souhaitez déclencher manuellement le téléchargement des poids pour tous les différents modèles en même temps, tapez :
fidnet download-weights
Les poids sont téléchargés par défaut dans le répertoire gitignored :
/data/weights
Vous pouvez modifier des paramètres comme ceux-ci en ajoutant un fichier .env ou en définissant des variables d'environnement spécifiant FIDNET_DATA_DIR ou FIDNET_WEIGHTS_DIR :
# .env
FIDNET_WEIGHTS_DIR=/path/to/directory/with/weights.hd5
Pour jeter un oeil à tous ces paramètres, tapez :
fidnet settings
Si vous disposez d'un environnement de travail (et que NMRPipe est installé, sinon voir la section suivante), vous pouvez tester si les choses fonctionnent en exécutant tous les exemples en même temps :
fidnet run-examples
Cela téléchargera des exemples de données et exécutera toutes les différentes fonctions FID-Net (à l'exception du découpleur 3D HNCA, dont l'exécution prend beaucoup plus de temps). Si vous souhaitez simplement télécharger les données d'exemple, sans effectuer le traitement par les modèles :
fidnet download-example-data
NMRPipe ne peut pas être installé à l'aide de conda. Si vous ne l'avez pas encore installé, vous pouvez utiliser le script fourni pour l'installer.
chmod +x install_nmrpipe.sh
install_nmrpipe.sh
NMRPipe donne quelques instructions sur la façon de modifier votre .cshrc. Cela ressemblera à ceci :
if (-e < REPO_DIR > /bin/NMRPipe/com/nmrInit.linux212_64.com) then
source < REPO_DIR > /bin/NMRPipe/com/nmrInit.linux212_64.com
endif
Suivez ces instructions pour que la commande NMRPipe puisse être trouvée.
Veuillez vous référer à --help dans l'outil de ligne de commande. Chaque commande individuelle a sa propre aide, expliquant quels sont les arguments d'entrée.
(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. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Remarque : le découpleur ne peut fonctionner qu'avec un maximum de 512 points complexes dans la dimension 13C. Les spectres contenant plus de points seront tronqués à 512 points complexes.
Un exemple de spectre antiphase en phase (AP-IP) de T4L99A (test.ft1) est fourni dans le dossier d'exemple.
L'entrée du DNN doit être au format nmrPipe. Si vous utilisez un spectromètre Bruker, le fichier FID brut (ser) doit être converti au format nmrpipe à l'aide de l'indicateur DMX pour que le découplage FID-Net fonctionne correctement.
Avant la saisie dans FID-Net, la dimension directe du spectre est échelonnée mais la partie imaginaire n'est pas supprimée. Le spectre est ensuite transposé, apodisé, rempli de zéros, phasé et transformé de Fourier dans la dimension indirecte. Pour de meilleurs résultats, un remplissage excessif de zéros dans la dimension indirecte doit être évité. En règle générale, nous utiliserions simplement « ZF -auto » dans nmrPipe. Le spectre doit ensuite être transposé avant l'entrée dans FID-Net.
L'entrée du DNN doit être un interférogramme 2D en phase (c'est-à-dire traité dans la dimension indirecte mais pas dans la dimension directe comme décrit ci-dessus).
La sortie du DNN peut ensuite être traitée (apodisée, remplie de zéros, transformée de Fourier et la partie imaginaire supprimée) pour donner le résultat final. Un exemple (final_proc.com) est fourni dans le dossier exemple.
(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. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Remarque : le découpleur 2D CON ne peut fonctionner qu'avec un maximum de 512 points complexes dans la dimension 13C. Les spectres contenant plus de points seront tronqués à 512 points complexes.
Un exemple de spectre en phase de l'ubiquitine (test001.ft1) est fourni dans le dossier d'exemple.
L'entrée du DNN doit être au format nmrPipe. Si vous utilisez un spectromètre Bruker, le fichier FID brut (ser) doit être converti au format nmrpipe à l'aide de l'indicateur DMX pour que le découplage FID-Net fonctionne correctement.
Avant la saisie dans FID-Net, la dimension directe du spectre est échelonnée mais la partie imaginaire n'est pas supprimée. Le spectre est ensuite transposé, apodisé, rempli de zéros, phasé et transformé de Fourier dans la dimension indirecte. Pour de meilleurs résultats, un remplissage excessif de zéros dans la dimension indirecte doit être évité. En règle générale, nous utiliserions simplement « ZF -auto » dans nmrPipe. Le spectre doit ensuite être transposé avant l'entrée dans FID-Net.
L'entrée du DNN doit être un interférogramme 2D en phase (c'est-à-dire traité dans la dimension indirecte mais pas dans la dimension directe comme décrit ci-dessus). Si les données sont en 3D, elles doivent être converties en un ensemble de plans 2D à l'aide de l'utilitaire pipe2xyz ou similaire. Un exemple d'entrée est fourni dans le dossier d'exemple (test001.ft1).
La sortie du DNN peut ensuite être traitée (apodisée, remplie de zéros, transformée de Fourier et la partie imaginaire supprimée) pour donner le résultat final. Un exemple (final_proc.com) est fourni dans le dossier exemple.
(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. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Remarque : le découpleur 2D 13Ct-13Cp ne peut fonctionner qu'avec un maximum de 512 points complexes dans la dimension 13C. Les spectres contenant plus de points seront tronqués à 512 points complexes.
Un exemple de spectre en phase de l'ubiquitine (test001.ft1) est fourni dans le dossier d'exemple.
L'entrée du DNN doit être au format nmrPipe. Si vous utilisez un spectromètre Bruker, le fichier FID brut (ser) doit être converti au format nmrpipe à l'aide de l'indicateur DMX pour que le découplage FID-Net fonctionne correctement.
Avant la saisie dans FID-Net, la dimension directe du spectre est échelonnée mais la partie imaginaire n'est pas supprimée. Le spectre est ensuite transposé, apodisé, rempli de zéros, phasé et transformé de Fourier dans la dimension indirecte. Pour de meilleurs résultats, un remplissage excessif de zéros dans la dimension indirecte doit être évité. En règle générale, nous utiliserions simplement « ZF -auto » dans nmrPipe. Le spectre doit ensuite être transposé avant l'entrée dans FID-Net.
L'entrée du DNN doit être un interférogramme 2D en phase (c'est-à-dire traité dans la dimension indirecte mais pas dans la dimension directe comme décrit ci-dessus). Si les données sont en 3D, elles doivent être converties en un ensemble de plans 2D à l'aide de l'utilitaire pipe2xyz ou similaire. Un exemple d'entrée est fourni dans le dossier d'exemple (test001.ft1).
La sortie du DNN peut ensuite être traitée (apodisée, remplie de zéros, transformée de Fourier et la partie imaginaire supprimée) pour donner le résultat final. Un exemple (final_proc.com) est fourni dans le dossier exemple.
(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. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Ce code est destiné à reconstruire les spectres NUS NMR 2D à l'aide de l'architecture FID-Net. Pour utiliser le code, le fichier contenant les poids du réseau entraîné doit être téléchargé.
La sortie du réseau est un fichier nmrPipe avec la dimension indirecte reconstruite dans le domaine temporel. La dimension indirecte peut maintenant être traitée (apodisée, remplie de zéros, phasée et transformée de Fourier) pour produire le spectre reconstruit final. L'analyse génère également std.ft2, fournissant une mesure de confiance dans les résultats. Ceci est également au format nmrPipe et est prétraité et transformé de Fourier selon les paramètres par défaut. Si celles-ci sont incorrectes, une transformée de Hilbert et une transformée de Fourier inverse peuvent être appliquées pour les remettre dans le domaine temporel avant le retraitement.
Il existe un exemple de fichier pour HDAC dans le dossier d'exemple, ainsi que le programme d'échantillonnage.
(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. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Ce code permet de découpler les spectres 3D HNCA et HN (COCA) à l'aide de l'architecture FID-Net. Remarque : le découpleur 3D HNCA ne peut fonctionner qu'avec un maximum de 256 points complexes dans la dimension 13C. Les spectres contenant plus de points seront tronqués à 256 points complexes.
(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. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Ce code vise à améliorer la résolution des spectres protéiques des protéines uniformément 13C-1H. Le code nécessite deux DNN basés sur l'architecture FID-Net. Le premier réseau supprime un couplage scalaire 13C-13C et accentue les pics dans la dimension 13C. Le deuxième réseau accentue les pics dans la dimension 1H.
Le dossier d'exemple contient des données pour HDAC8 uniformément étiqueté 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. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Vous pouvez installer des hooks de pré-validation qui effectuent quelques vérifications avant de valider votre code :
pip install -e ".[dev]"
pre-commit install