Reinvent ist ein molekulares Design-Tool für De-novo-Design, Gerüsthüpfen, R-Gruppen-Austausch, Linker-Design, Moleküloptimierung und andere Aufgaben mit kleinem Molekül. Reinvent verwendet einen RL-Algorithmus (Verstärkung Learning), um optimierte Moleküle zu generieren, die mit einem benutzerdefinierten Eigenschaftsprofil als Multikomponenten-Score definiert sind. Transfer Learning (TL) kann verwendet werden, um ein Modell zu erstellen oder vorzugeben, das Moleküle näher an einer Reihe von Eingangsmolekülen erzeugt.
Ein Papier, das die Software beschreibt, wurde im Journal of Cheminformatics als offener Zugriff veröffentlicht: Neuvent 4: Modernes AI -gesteuerter generativer Molekül -Design. Verweise auf frühere Arbeiten finden Sie unter Autoren.md.
Reinvent wird unter Linux entwickelt und unterstützt sowohl GPU als auch CPU. Die Linux -Version ist vollständig validiert. Neu erfinden Windows und MacOSX unterstützt sowohl die GPU als auch die CPU, wird jedoch nur teilweise auf diesen Plattformen getestet und die Unterstützung ist daher begrenzt.
Der Code ist in Python 3 geschrieben (> = 3.10). Die Liste der Abhängigkeiten finden Sie im Repository (siehe auch Installation unten).
Eine GPU ist nicht ausschließlich notwendig, aber aus Leistungsgründen nachdrücklich empfohlen, insbesondere für Transferlernen und Modelltraining. Das Verstärkungslernen (RL) erfordert die Berechnung der Bewertungen, bei denen die meisten Bewertungskomponenten auf der CPU ausgeführt werden. Somit ist eine GPU für RL weniger wichtig (je nachdem, wie viel Zeit für die CPU aufgewendet wird).
Beachten Sie, dass, wenn in Ihrem Computer keine GPU installiert ist, der Code automatisch auf der CPU ausgeführt wird. Novidia gpus unterstützt neu und auch einige AMD -GPUs. Bei den meisten Designaufgaben ist ein Gedächtnis von etwa 8 GIB für CPU -Hauptspeicher und GPU -Speicher ausreichend.
conda create --name reinvent4 python=3.10
conda activate reinvent4pip install -r requirements-linux-64.lockpip install torch==2.2.1 torchvision==0.17.1 torchaudio==2.2.1 --index-url https://download.pytorch.org/whl/rocm5.7requirements-macOS.lock für macOSX.pip install --no-deps .reinvent hinzugefügt. reinvent --helpReinvent ist ein Befehlszeilenwerkzeug und funktioniert hauptsächlich wie folgt
reinvent -l sampling.log sampling.toml Dies schreibt Protokollierungsinformationen an die Datei sampling.log . Wenn Sie dies auf den Bildschirm schreiben möchten, lassen Sie den Teil -l sampling.log aus. sampling.toml ist die Konfigurationsdatei. Das Hauptbenutzerformat ist TOML, da es tendenziell freundlicher ist. JSON kann auch verwendet werden, add -f json , aber ein spezialisierter Redakteur wird empfohlen, da das Format sehr empfindlich auf geringfügige Änderungen ist.
Beispielkonfigurationsdateien für alle Auslaufmodi befinden sich in config/toml im Repository- und Dateipfad in diesen Dateien müssen an Ihre lokale Installation angepasst werden. Insbesondere befinden sich in priors bereitgestellte Vormodelle und Sie wählen ein Modell und den entsprechenden Laufmodus, abhängig vom Forschungsproblem, das Sie angehen möchten. In mehreren *.md -Dateien finden Sie zusätzliche Informationen in config/toml mit Anweisungen zum Konfigurieren der TOML -Datei. Interne Priors können mit einer Punktnotation verwiesen werden (siehe reinvent/prior_registry.py ).
Jupyter -Notizbücher Grundlegende Anweisungen finden Sie in den Kommentaren in den Konfigurationsbeispielen in config/toml .
Notizbücher sind in notebooks/ Verzeichnis bereitgestellt. Bitte beachten Sie, dass wir die Notizbücher im JupyText "Light Skript" -Format bereitstellen. Um mit den Lichtskripten zu arbeiten, müssen Sie JupyText installieren. Ein paar andere Pakete werden auch nützlich sein.
pip install jupytext mols2grid seaborn Die Python -Dateien in notebooks/ können dann in ein Notebook -z.
jupytext -o Reinvent_demo.ipynb Reinvent_demo.pyAktualisieren Sie die Sperrdateien mit PIP-Tools (bearbeiten Sie die Dateien bitte nicht manuell):
pip-compile --extra-index-url=https://download.pytorch.org/whl/cu121 --extra-index-url=https://pypi.anaconda.org/OpenEye/simple --resolver=backtracking pyproject.toml Um ein einzelnes Paket zu aktualisieren, verwenden Sie pip-compile --upgrade-package somepackage (siehe Dokumentation für PIP-Tools).
Das Scoring -Subsystem verwendet einen einfachen Plugin -Mechanismus (Python native Namespace -Pakete). Wenn Sie Ihr eigenes Plugin schreiben möchten, befolgen Sie die folgenden Anweisungen. Es ist nicht erforderlich, den Code für Neufindung zu berühren. Das öffentliche Repository enthält ein Beitragsverzeichnis mit einigen nützlichen Beispielen.
/top/dir/somewhere/reinvent_plugins/components wobei /top/dir/somewhere ein bequemer Ort für Sie ist.__init__.py in reinvent_plugins oder components ein, da dies den Mechanismus brechen würde. Es ist in Ordnung, normale Pakete in components zu erstellen, solange Sie diese korrekt importieren.comp_* in reinvent_plugins/components beginnt. Dateien mit unterschiedlichen Namen werden ignoriert, dh nicht importiert. Das Verzeichnis wird rekursiv durchsucht, damit Ihr Code nach Bedarf strukturiert, aber Verzeichnis-/Paketnamen müssen eindeutig sein./top/dir/somewhere in die Variable PYTHONPATH -Umgebungsvariable oder verwenden Sie einen anderen Mechanismus, um sys.path zu erweitern. Dies gilt in erster Linie für Entwickler und Administratoren/Benutzer, die sicherstellen möchten, dass die Installation funktioniert. Die Informationen hier sind nicht relevant für den praktischen Einsatz von Neuerfindung. In der Grundnutzung finden Sie Anweisungen zur Verwendung des Befehls reinvent .
Das neu erfundene Projekt verwendet das pytest -Framework für seine Tests. Bevor Sie sie ausführen, müssen Sie zuerst eine Konfigurationsdatei für die Tests erstellen.
Erstellen Sie im Projektverzeichnis eine config.json -Datei im configs/ Verzeichnis. Sie können das Beispiel example.config.json als Basis verwenden. Stellen Sie sicher, dass Sie MAIN_TEST_PATH auf ein nicht existierendes Verzeichnis einstellen. Hier werden temporäre Dateien während der Tests geschrieben. Wenn es auf ein vorhandenes Verzeichnis eingestellt ist, wird dieses Verzeichnis entfernt, sobald die Tests abgeschlossen sind.
Einige Tests erfordern eine proprietäre OpenEye -Lizenz. Sie müssen ein paar Dinge einrichten, damit die Tests Ihre Lizenz lesen. Der einfache Weg besteht darin, die Umgebungsvariable OE_LICENSE nur auf den Pfad der Datei mit der Lizenz zu setzen.
Sobald Sie eine Konfiguration haben und Ihre Lizenz gelesen werden kann, können Sie die Tests ausführen.
$ pytest tests --json /path/to/config.json --device cuda