July 30, 2021

deepmind/alphafold: Open-Source-Code für AlphaFold.

Dieses Paket bietet eine Implementierung der Inferenzpipeline von AlphaFold v2.0. Dies ist ein völlig neues Modell, das in CASP14 eingetragen und in Nature veröffentlicht wurde. Der Einfachheit halber bezeichnen wir dieses Modell im weiteren Verlauf dieses Dokuments als AlphaFold.

Jede Veröffentlichung, die Erkenntnisse aus der Verwendung dieses Quellcodes oder der Modellparameter offenlegt, sollte das AlphaFold-Papier zitieren.

CASP14-Vorhersagen

Erstmalige Einrichtung

Die folgenden Schritte sind erforderlich, um AlphaFold auszuführen:

  1. Docker installieren.

  2. Laden Sie genetische Datenbanken herunter (siehe unten).

  3. Modellparameter herunterladen (siehe unten).

  4. Überprüfen Sie, ob AlphaFold eine GPU verwenden kann, indem Sie Folgendes ausführen:

    docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi

    Die Ausgabe dieses Befehls sollte eine Liste Ihrer GPUs anzeigen. Wenn dies nicht der Fall ist, überprüfen Sie, ob Sie beim Einrichten des NVIDIA Container Toolkits alle Schritte richtig befolgt haben, oder sehen Sie sich das folgende NVIDIA Docker-Problem an.

Genetische Datenbanken

Dieser Schritt erfordert rsync und aria2c auf Ihrem Rechner installiert werden.

AlphaFold benötigt zur Ausführung mehrere genetische (Sequenz-)Datenbanken:

Wir stellen ein Skript zur Verfügung scripts/download_all_data.sh mit dem alle diese Datenbanken heruntergeladen und eingerichtet werden können. Dies sollte 8-12 Stunden dauern.

📒 Hinweis: Die Download-Gesamtgröße beträgt etwa 428 GB und die Gesamtgröße im entpackten Zustand beträgt 2,2 TB. Bitte stellen Sie sicher, dass Sie über genügend Festplattenspeicher, Bandbreite und Zeit zum Herunterladen verfügen.

Dieses Skript lädt auch die Modellparameterdateien herunter. Sobald das Skript fertig ist, sollten Sie die folgende Verzeichnisstruktur haben:

$DOWNLOAD_DIR/                             # Total: ~ 2.2 TB (download: 428 GB)
    bfd/                                   # ~ 1.8 TB (download: 271.6 GB)
        # 6 files.
    mgnify/                                # ~ 64 GB (download: 32.9 GB)
        mgy_clusters.fa
    params/                                # ~ 3.5 GB (download: 3.5 GB)
        # 5 CASP14 models,
        # 5 pTM models,
        # LICENSE,
        # = 11 files.
    pdb70/                                 # ~ 56 GB (download: 19.5 GB)
        # 9 files.
    pdb_mmcif/                             # ~ 206 GB (download: 46 GB)
        mmcif_files/
            # About 180,000 .cif files.
        obsolete.dat
    uniclust30/                            # ~ 87 GB (download: 24.9 GB)
        uniclust30_2018_08/
            # 13 files.
    uniref90/                              # ~ 59 GB (download: 29.7 GB)
        uniref90.fasta

Modellparameter

Während der AlphaFold-Code unter der Apache 2.0-Lizenz lizenziert ist, werden die AlphaFold-Parameter nur für den nicht-kommerziellen Gebrauch unter den Bedingungen der CC BY-NC 4.0-Lizenz zur Verfügung gestellt. Weitere Informationen finden Sie im folgenden Haftungsausschluss.

Die AlphaFold-Parameter sind unter https://storage.googleapis.com/alphafold/alphafold_params_2021-07-14.tar verfügbar und werden als Teil der scripts/download_all_data.sh Skript. Dieses Skript lädt Parameter herunter für:

  • 5 Modelle, die während CASP14 verwendet und umfassend auf die Qualität der Strukturvorhersage validiert wurden (siehe Jumper et al. 2021, Suppl. Methods 1.12 für Details).
  • 5 pTM-Modelle, die feinabgestimmt wurden, um pTM (vorhergesagter TM-Score) zu erzeugen und parallel zu ihren Strukturvorhersagen ausgerichtete Fehlerwerte vorhersagten (siehe Jumper et al. 2021, Suppl. Methods 1.9.7 für Details).

Ausführen von AlphaFold

Die einfachste Möglichkeit, AlphaFold auszuführen, ist die Verwendung des bereitgestellten Docker-Skripts. Dies wurde in Google Cloud mit einem Computer getestet, der die nvidia-gpu-cloud-image
mit 12 vCPUs, 85 GB RAM, einer 100 GB Bootdisk, den Datenbanken auf einer zusätzlichen 3 TB Festplatte und einer A100 GPU.

  1. Klonen Sie dieses Repository und cd hinein.

    git clone https://github.com/deepmind/alphafold.git
  2. Ändern DOWNLOAD_DIR im docker/run_docker.py der Pfad zu dem Verzeichnis sein, das die heruntergeladenen Datenbanken enthält.

  3. Erstellen Sie das Docker-Image:

    docker build -f docker/Dockerfile -t alphafold .
  4. Installiere das run_docker.py Abhängigkeiten. Hinweis: Sie können optional eine virtuelle Python-Umgebung erstellen, um Konflikte mit der Python-Umgebung Ihres Systems zu vermeiden.

    pip3 install -r docker/requirements.txt
  5. Lauf run_docker.py zeigt auf eine FASTA-Datei, die die Proteinsequenz enthält, deren Struktur Sie vorhersagen möchten. Wenn Sie die Struktur eines bereits in PDB vorhandenen Proteins vorhersagen und es nicht als Vorlage verwenden möchten, dann max_template_date muss vor dem Freigabedatum der Struktur liegen. Beispiel für das T1050 CASP14-Ziel:

    python3 docker/run_docker.py --fasta_paths=T1050.fasta --max_template_date=2020-05-14

    Standardmäßig versucht Alphafold, alle sichtbaren GPU-Geräte zu verwenden. Um eine Teilmenge zu verwenden, geben Sie eine durch Kommas getrennte Liste von GPU-UUID(s) oder -indizes mit dem
    --gpu_devices Flagge. Weitere Informationen finden Sie unter GPU-Enumeration.

  6. Sie können den Kompromiss zwischen AlphaFold-Geschwindigkeit und Qualität steuern, indem Sie entweder
    --preset=full_dbs oder --preset=casp14 zum Ausführungsbefehl. Wir bieten folgende Voreinstellungen:

    • casp14: Dieses Preset verwendet die gleichen Einstellungen wie in CASP14. Es läuft mit allen genetischen Datenbanken und mit 8 Ensembles.
    • full_dbs: Das Modell in dieser Voreinstellung ist 8-mal schneller als das
      casp14 voreingestellt mit einem sehr geringen Qualitätsabfall (-0,1 durchschnittlicher GDT-Abfall auf CASP14-Domänen). Es läuft mit allen genetischen Datenbanken und ohne Ensemble.

    Ausführen des obigen Befehls mit dem casp14 Voreinstellung würde so aussehen:

    python3 docker/run_docker.py --fasta_paths=T1050.fasta --max_template_date=2020-05-14 --preset=casp14

AlphaFold-Ausgabe

Die Ausgaben befinden sich in einem Unterordner von output_dir im run_docker.py. Dazu gehören die berechneten MSAs, nicht entspannte Strukturen, entspannte Strukturen, geordnete Strukturen, Rohmodellausgaben, Vorhersagemetadaten und Abschnittszeiten. Das
output_dir Das Verzeichnis hat die folgende Struktur:

output_dir/
    features.pkl
    ranked_{0,1,2,3,4}.pdb
    ranking_debug.json
    relaxed_model_{1,2,3,4,5}.pdb
    result_model_{1,2,3,4,5}.pkl
    timings.json
    unrelaxed_model_{1,2,3,4,5}.pdb
    msas/
        bfd_uniclust_hits.a3m
        mgnify_hits.sto
        uniref90_hits.sto

Der Inhalt jeder Ausgabedatei ist wie folgt:

  • features.pkl – EIN pickle Datei mit dem Eingabe-Feature Numpy Arrays, die von den Modellen verwendet werden, um die Strukturen zu erzeugen.
  • unrelaxed_model_*.pdb – Eine Textdatei im PDB-Format, die die vorhergesagte Struktur enthält, genau wie vom Modell ausgegeben.
  • relaxed_model_*.pdb – Eine Textdatei im PDB-Format, die die vorhergesagte Struktur enthält, nachdem ein Amber-Relaxationsverfahren für die nicht entspannte Strukturvorhersage durchgeführt wurde, siehe Jumper et al. 2021, Nachtrag. Methoden 1.8.6 für Details.
  • ranked_*.pdb – Eine Textdatei im PDB-Format, die die gelockerten vorhergesagten Strukturen enthält, nach der Neuordnung nach Modellkonfidenz. Hier ranked_0.pdb sollte die Vorhersage mit dem höchsten Vertrauen enthalten, und ranked_4.pdb die Vorhersage mit dem geringsten Vertrauen. Um das Vertrauen des Modells einzustufen, verwenden wir den vorhergesagten LDDT (pLDDT), siehe Jumper et al. 2021, Nachtrag. Methoden 1.9.6 für Details.
  • ranking_debug.json – Eine Textdatei im JSON-Format, die die pLDDT-Werte enthält, die zum Durchführen des Modellrankings verwendet wurden, und eine Zuordnung zurück zu den ursprünglichen Modellnamen.
  • timings.json – Eine Textdatei im JSON-Format, die die Zeiten enthält, die für die Ausführung jedes Abschnitts der AlphaFold-Pipeline benötigt wurden.
  • msas/ – Ein Verzeichnis, das die Dateien enthält, die die verschiedenen genetischen Werkzeugtreffer beschreiben, die verwendet wurden, um das Eingabe-MSA zu erstellen.
  • result_model_*.pkl – EIN pickle Datei, die ein verschachteltes Wörterbuch der verschiedenen Numpy-Arrays enthält, die direkt vom Modell erzeugt werden. Dazu gehören neben der Ausgabe des Strukturmoduls auch Hilfsausgaben wie Distogramme und pLDDT-Scores. Bei Verwendung der pTM-Modelle sind auch die pTM-Logits in dieser Datei enthalten.

Dieser Code wurde getestet, um die durchschnittliche Top-1-Genauigkeit auf einem CASP14-Testsatz mit pLDDT-Ranking über 5 Modellvorhersagen zu erreichen (einige CASP-Ziele wurden mit früheren Versionen von AlphaFold ausgeführt und einige hatten manuelle Eingriffe; Details finden Sie in unserer bevorstehenden Veröffentlichung). Einige Ziele wie T1064 können auch eine hohe individuelle Laufvarianz gegenüber zufälligen Startwerten aufweisen.

Auf viele Proteine ​​schließen

Das bereitgestellte Inferenzskript ist für die Vorhersage der Struktur eines einzelnen Proteins optimiert und stellt das neuronale Netzwerk so zusammen, dass es genau auf die Größe der Sequenz, MSA und Templates spezialisiert ist. Bei großen Proteinen ist die Kompilierzeit ein vernachlässigbarer Bruchteil der Laufzeit, kann aber bei kleinen Proteinen oder wenn die Multi-Sequenz-Alignments bereits vorberechnet sind, an Bedeutung gewinnen. Im Fall der Masseninferenz kann es sinnvoll sein, unsere
make_fixed_size Funktion zum Auffüllen der Eingaben auf eine einheitliche Größe, wodurch die Anzahl der erforderlichen Kompilierungen reduziert wird.

Wir stellen kein Masseninferenzskript zur Verfügung, aber es sollte einfach sein, es zusätzlich zu entwickeln RunModel.predict Verfahren mit einem parallelen System zur Vorberechnung von Mehrsequenz-Alignments. Alternativ kann dieses Skript mit nur geringem Aufwand wiederholt ausgeführt werden.

Hinweis zur Reproduzierbarkeit

Die Ausgabe von AlphaFold für eine kleine Anzahl von Proteinen weist eine hohe Varianz zwischen den Durchläufen auf und kann durch Änderungen der Eingabedaten beeinflusst werden. Das CASP14-Target T1064 ist ein bemerkenswertes Beispiel; die große Anzahl von SARS-CoV-2-verwandten Sequenzen, die kürzlich hinterlegt wurden, verändert seinen MSA signifikant. Diese Variabilität wird durch den Modellauswahlprozess etwas abgemildert; 5 Modelle laufen und die sichersten nehmen.

Um die Ergebnisse unseres CASP14-Systems so genau wie möglich zu reproduzieren, müssen Sie die gleichen Datenbankversionen verwenden, die wir in CASP verwendet haben. Diese stimmen möglicherweise nicht mit den von unseren Skripten heruntergeladenen Standardversionen überein.

Für Genetik:

Für Vorlagen:

  • PDB: (heruntergeladen 14.05.2020)
  • PDB70: (heruntergeladen 2020-05-13)

Eine Alternative für Vorlagen besteht darin, die neueste PDB und PDB70 zu verwenden, aber das Flag zu übergeben --max_template_date=2020-05-14, die Vorlagen nur auf Strukturen beschränkt, die zu Beginn von CASP14 verfügbar waren.

Diese Arbeit zitieren

Wenn Sie den Code oder die Daten in diesem Paket verwenden, zitieren Sie bitte:

@Article{AlphaFold2021,
  author  = {Jumper, John and Evans, Richard and Pritzel, Alexander and Green, Tim and Figurnov, Michael and Ronneberger, Olaf and Tunyasuvunakool, Kathryn and Bates, Russ and {v{Z}}{'i}dek, Augustin and Potapenko, Anna and Bridgland, Alex and Meyer, Clemens and Kohl, Simon A A and Ballard, Andrew J and Cowie, Andrew and Romera-Paredes, Bernardino and Nikolov, Stanislav and Jain, Rishub and Adler, Jonas and Back, Trevor and Petersen, Stig and Reiman, David and Clancy, Ellen and Zielinski, Michal and Steinegger, Martin and Pacholska, Michalina and Berghammer, Tamas and Bodenstein, Sebastian and Silver, David and Vinyals, Oriol and Senior, Andrew W and Kavukcuoglu, Koray and Kohli, Pushmeet and Hassabis, Demis},
  journal = {Nature},
  title   = {Highly accurate protein structure prediction with {AlphaFold}},
  year    = {2021},
  doi     = {10.1038/s41586-021-03819-2},
  note    = {(Accelerated article preview)},
}

Danksagung

AlphaFold kommuniziert mit und/oder referenziert die folgenden separaten Bibliotheken und Pakete:

Wir danken allen Mitwirkenden und Betreuern!

Lizenz und Haftungsausschluss

Dies ist kein offiziell unterstütztes Google-Produkt.

Copyright 2021 DeepMind Technologies Limited.

AlphaFold-Code-Lizenz

Lizenziert unter der Apache-Lizenz, Version 2.0 (die “Lizenz”); Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden. Eine Kopie der Lizenz erhalten Sie unter https://www.apache.org/licenses/LICENSE-2.0.

Sofern nicht durch geltendes Recht vorgeschrieben oder schriftlich vereinbart, wird die unter der Lizenz vertriebene Software “WIE BESEHEN” OHNE ausdrückliche oder stillschweigende Gewährleistungen oder Bedingungen jeglicher Art vertrieben. Siehe die Lizenz für die spezifische Sprache, die Berechtigungen und Einschränkungen unter der Lizenz regelt.

Lizenz für Modellparameter

Die AlphaFold-Parameter werden nur für den nicht-kommerziellen Gebrauch unter den Bedingungen der Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)-Lizenz zur Verfügung gestellt. Details finden Sie unter: https://creativecommons.org/licenses/by-nc/4.0/legalcode

Drittanbietersoftware

Die Nutzung der Software, Bibliotheken oder des Codes von Drittanbietern, auf die im Abschnitt „Acknowledgements“ Bezug genommen wird, kann durch separate Geschäftsbedingungen oder Lizenzbestimmungen geregelt werden. Ihre Nutzung der Software, Bibliotheken oder des Codes von Drittanbietern unterliegt solchen Bedingungen und Sie sollten vor der Verwendung überprüfen, ob Sie alle geltenden Einschränkungen oder Bedingungen einhalten können.