Tiefe neuronale Netze zur Analyse von NMR-Zeitbereichsdaten. Sehen:
Dies ist die Kurzversion dieser README-Datei. Weitere Einzelheiten finden Sie in den ausführlicheren Erläuterungen weiter unten.
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
Klonen Sie zunächst das Repository:
git clone https://github.com/gogulan-k/FID-Net.git
Der einfachste Weg, eine Arbeitsumgebung mit allen Paketen zu erhalten, die FID-Net benötigt, ist die Verwendung von Conda oder Mamba und der bereitgestellten Datei „environment.yml“:
cd FID-Net
mamba env update -f environment.yml
und die Umgebung aktivieren:
mamba activate fidnet
Durch die Installation der Umgebung wird auch das Paket „fidnet“ installiert, wodurch das Befehlszeilentool „fidnet“ verfügbar wird (siehe unten).
Die Gewichte der neuronalen Netze sind nicht in diesem Python-Paket enthalten, werden aber bei Bedarf spontan heruntergeladen.
Wenn Sie das gleichzeitige Herunterladen der Gewichte für alle verschiedenen Modelle manuell auslösen möchten, geben Sie Folgendes ein:
fidnet download-weights
Die Gewichte werden standardmäßig in das Gitignored-Verzeichnis heruntergeladen:
/data/weights
Sie können Einstellungen wie diese ändern, indem Sie eine .env-Datei hinzufügen oder Umgebungsvariablen festlegen, die FIDNET_DATA_DIR oder FIDNET_WEIGHTS_DIR angeben:
# .env
FIDNET_WEIGHTS_DIR=/path/to/directory/with/weights.hd5
Um einen Blick auf alle diese Einstellungen zu werfen, geben Sie Folgendes ein:
fidnet settings
Wenn Sie über eine Arbeitsumgebung verfügen (und NMRPipe installiert ist, falls nicht, lesen Sie den nächsten Abschnitt), können Sie testen, ob alles funktioniert, indem Sie alle Beispiele gleichzeitig ausführen:
fidnet run-examples
Dadurch werden Beispieldaten heruntergeladen und alle verschiedenen FID-Net-Funktionen ausgeführt (mit Ausnahme des 3D-HNCA-Entkopplers, dessen Ausführung viel länger dauert). Wenn Sie nur die Beispieldaten herunterladen möchten, ohne die Verarbeitung durch die Modelle durchzuführen:
fidnet download-example-data
NMRPipe kann nicht mit Conda installiert werden. Wenn Sie es noch nicht installiert haben, können Sie es mit dem bereitgestellten Skript installieren.
chmod +x install_nmrpipe.sh
install_nmrpipe.sh
NMRPipe gibt einige Anweisungen zum Bearbeiten Ihrer .cshrc. Es wird ungefähr so aussehen:
if (-e < REPO_DIR > /bin/NMRPipe/com/nmrInit.linux212_64.com) then
source < REPO_DIR > /bin/NMRPipe/com/nmrInit.linux212_64.com
endif
Befolgen Sie diese Anweisungen, damit der Befehl NMRPipe gefunden werden kann.
Bitte beachten Sie die Option --help im Befehlszeilentool. Für jeden einzelnen Befehl gibt es eine eigene Hilfe, in der die Eingabeargumente erläutert werden.
(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. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Hinweis: Der Entkoppler kann nur mit bis zu 512 komplexen Punkten in der 13C-Dimension arbeiten. Spektren mit mehr Punkten werden auf 512 komplexe Punkte gekürzt.
Ein Beispiel-Antiphase-Inphase-Spektrum (AP-IP) von T4L99A (test.ft1) finden Sie im Beispielordner.
Die Eingabe in das DNN muss im nmrPipe-Format erfolgen. Bei Verwendung eines Bruker-Spektrometers muss die rohe FID-Datei (ser) mithilfe des DMX-Flags in das nmrpipe-Format konvertiert werden, damit die FID-Net-Entkopplung ordnungsgemäß funktioniert.
Vor der Eingabe in FID-Net wird die direkte Dimension des Spektrums phasenverschoben, der Imaginärteil jedoch nicht gelöscht. Das Spektrum wird dann transponiert, apodisiert, mit Nullen aufgefüllt, phasengesteuert und in der indirekten Dimension Fourier-transformiert. Um optimale Ergebnisse zu erzielen, sollte eine übermäßige Nullfüllung in der indirekten Dimension vermieden werden. Normalerweise würden wir in nmrPipe einfach „ZF -auto“ verwenden. Das Spektrum sollte dann vor der Eingabe in FID-Net transponiert werden.
Die Eingabe in das DNN muss ein 2D-Inphase-Interferogramm sein (dh in der indirekten Dimension verarbeitet, aber nicht in der direkten Dimension, wie oben beschrieben).
Die Ausgabe des DNN kann dann verarbeitet werden (apodisiert, mit Nullen aufgefüllt, Fourier-transformiert und der Imaginärteil gelöscht), um das Endergebnis zu erhalten. Ein Beispiel (final_proc.com) finden Sie im Beispielordner.
(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. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Hinweis: Der 2D CON-Entkoppler kann nur mit bis zu 512 komplexen Punkten in der 13C-Dimension arbeiten. Spektren mit mehr Punkten werden auf 512 komplexe Punkte gekürzt.
Ein Beispiel-In-Phase-Spektrum von Ubiquitin (test001.ft1) finden Sie im Beispielordner.
Die Eingabe in das DNN muss im nmrPipe-Format erfolgen. Bei Verwendung eines Bruker-Spektrometers muss die rohe FID-Datei (ser) mithilfe des DMX-Flags in das nmrpipe-Format konvertiert werden, damit die FID-Net-Entkopplung ordnungsgemäß funktioniert.
Vor der Eingabe in FID-Net wird die direkte Dimension des Spektrums phasenverschoben, der Imaginärteil jedoch nicht gelöscht. Das Spektrum wird dann transponiert, apodisiert, mit Nullen aufgefüllt, phasengesteuert und in der indirekten Dimension Fourier-transformiert. Um optimale Ergebnisse zu erzielen, sollte eine übermäßige Nullfüllung in der indirekten Dimension vermieden werden. Normalerweise würden wir in nmrPipe einfach „ZF -auto“ verwenden. Das Spektrum sollte dann vor der Eingabe in FID-Net transponiert werden.
Die Eingabe in das DNN muss ein 2D-Inphase-Interferogramm sein (d. h. in der indirekten Dimension verarbeitet, aber nicht in der direkten Dimension, wie oben beschrieben). Wenn es sich bei den Daten um 3D-Daten handelt, müssen sie mit dem Dienstprogramm „pipe2xyz“ oder ähnlichem in einen Satz von 2D-Ebenen konvertiert werden. Eine Beispieleingabe finden Sie im Beispielordner (test001.ft1).
Die Ausgabe des DNN kann dann verarbeitet werden (apodisiert, mit Nullen aufgefüllt, Fourier-transformiert und der Imaginärteil gelöscht), um das Endergebnis zu erhalten. Ein Beispiel (final_proc.com) finden Sie im Beispielordner.
(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. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Hinweis: Der 2D-13Ct-13Cp-Entkoppler kann nur mit bis zu 512 komplexen Punkten in der 13C-Dimension arbeiten. Spektren mit mehr Punkten werden auf 512 komplexe Punkte gekürzt.
Ein Beispiel-In-Phase-Spektrum von Ubiquitin (test001.ft1) finden Sie im Beispielordner.
Die Eingabe in das DNN muss im nmrPipe-Format erfolgen. Bei Verwendung eines Bruker-Spektrometers muss die rohe FID-Datei (ser) mithilfe des DMX-Flags in das nmrpipe-Format konvertiert werden, damit die FID-Net-Entkopplung ordnungsgemäß funktioniert.
Vor der Eingabe in FID-Net wird die direkte Dimension des Spektrums phasenverschoben, der Imaginärteil jedoch nicht gelöscht. Das Spektrum wird dann transponiert, apodisiert, mit Nullen aufgefüllt, phasengesteuert und in der indirekten Dimension Fourier-transformiert. Um optimale Ergebnisse zu erzielen, sollte eine übermäßige Nullfüllung in der indirekten Dimension vermieden werden. Normalerweise würden wir in nmrPipe einfach „ZF -auto“ verwenden. Das Spektrum sollte dann vor der Eingabe in FID-Net transponiert werden.
Die Eingabe in das DNN muss ein 2D-Inphase-Interferogramm sein (d. h. in der indirekten Dimension verarbeitet, aber nicht in der direkten Dimension, wie oben beschrieben). Wenn es sich bei den Daten um 3D-Daten handelt, müssen sie mit dem Dienstprogramm „pipe2xyz“ oder ähnlichem in einen Satz von 2D-Ebenen konvertiert werden. Eine Beispieleingabe finden Sie im Beispielordner (test001.ft1).
Die Ausgabe des DNN kann dann verarbeitet werden (apodisiert, mit Nullen aufgefüllt, Fourier-transformiert und der Imaginärteil gelöscht), um das Endergebnis zu erhalten. Ein Beispiel (final_proc.com) finden Sie im Beispielordner.
(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. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Dieser Code dient zur Rekonstruktion von 2D-NUS-NMR-Spektren mithilfe der FID-Net-Architektur. Um den Code verwenden zu können, muss die Datei mit den Gewichten für das trainierte Netzwerk heruntergeladen werden.
Die Ausgabe des Netzwerks ist eine nmrPipe-Datei mit der im Zeitbereich rekonstruierten indirekten Dimension. Die indirekte Dimension kann nun verarbeitet (apodisiert, mit Nullen gefüllt, phasengesteuert und Fourier-transformiert) werden, um das endgültige rekonstruierte Spektrum zu erhalten. Die Analyse gibt auch std.ft2 aus, was ein Maß für die Zuverlässigkeit der Ausgaben darstellt. Dies liegt ebenfalls im nmrPipe-Format vor und wird gemäß Standardparametern vorverarbeitet und Fourier-transformiert. Wenn diese falsch sind, können eine Hilbert-Transformation und eine inverse Fourier-Transformation angewendet werden, um diese vor der erneuten Verarbeitung wieder in den Zeitbereich zu bringen.
Im Beispielordner befindet sich eine Beispieldatei für HDAC zusammen mit dem Probenahmeplan.
(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. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Dieser Code dient zur Entkopplung von 3D-HNCA- und HN(COCA)-Spektren mithilfe der FID-Net-Architektur. Hinweis: Der 3D-HNCA-Entkoppler kann nur mit bis zu 256 komplexen Punkten in der 13C-Dimension arbeiten. Spektren mit mehr Punkten werden auf 256 komplexe Punkte gekürzt.
(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. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Dieser Code dient der Verbesserung der Auflösung von Proteinspektren von einheitlich 13C-1H-Proteinen. Der Code erfordert zwei DNNs basierend auf der FID-Net-Architektur. Das erste Netzwerk entfernt eine skalare 13C-13C-Kopplung und schärft Peaks in der 13C-Dimension. Das zweite Netzwerk schärft Spitzen in der 1H-Dimension.
Der Beispielordner enthält Daten für einheitlich mit 13C-1H gekennzeichnetes 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. │
╰─────────────────────────────────────────────────────────────────────────────────╯
Sie können Pre-Commit-Hooks installieren, die einige Prüfungen durchführen, bevor Sie Ihren Code festschreiben:
pip install -e ".[dev]"
pre-commit install