ActivePapers-Tutorial
Python-Edition JVM-Edition Pharo-Edition Blog … Bibliothek —> ActivePapers-Tutorial Dieses kurze Tutorial zeigt, wie Sie den Inhalt eines ActivePapers inspizieren Code und Dokumentation (einschließlich Diagrammen) extrahieren Rechenparameter ändern den Code anpassen Berechnungen erneut ausführen ein ActivePaper von Grund auf neu erstellen Die Beispieldatei für dieses Tutorial können Sie von Figshare herunterladen.
Es ist auch empfehlenswert, sich die Beschreibung auf der Figshare-Website anzusehen. Sie müssen nicht verstehen, was genau darin geschieht oder warum – falls Sie dennoch interessiert sind, können Sie gerne das zugrundeliegende Fachpapier lesen, das sich mit der Berechnung der translatorischen und rotatorischen Diffusionstensoren eines Proteins in Lösung anhand einer Molekulardynamik-Trajektorie befasst. Bitte kopieren Sie die heruntergeladene ActivePaper-Datei in ein leeres Verzeichnis. Öffnen Sie ein Terminal-Fenster und wechseln Sie in dieses Verzeichnis.
Wenn Sie nun ls -l eingeben, sollte etwas Ähnliches wie Folgendes erscheinen: -rw-r—r— 1 hinsen staff 148133188 Sep 26 16:21 lysozyme_diffusion.ap Inspektion des Inhalts Der Befehl aptool ls erzeugt eine lange Liste von Datensätzen, beginnend mit code/correlation_functions code/diffusion_tensor code/identify_trajectories code/plots code/python-packages/fitting code/python-packages/molecular_structure code/python-packages/mosaic code/python-packages/quaternion code/python-packages/time_series code/python-packages/units code/thermal_averages code/trajectory_processing data/coordinate_trajectories/rotation_laboratory_frame_1 data/coordinate_trajectories/rotation_laboratory_frame_10 data/coordinate_trajectories/rotation_laboratory_frame_2 Doch woher weiß aptool, welche ActivePaper-Datei Sie betrachten möchten?
Nun, wenn sich im aktuellen Verzeichnis nur eine Datei mit der Endung .ap befindet, wird automatisch diese verwendet. Deshalb ist es sinnvoll, für jedes ActivePaper-Projekt ein eigenes Verzeichnis zu nutzen. Falls Sie dies aus irgendeinem Grund nicht tun möchten, können Sie den Dateinamen des ActivePapers explizit angeben: aptool ls -p lysozyme_diffusion.ap Weitere Informationen erhalten Sie mit aptool ls -l, was folgende Ausgabe liefert: 2013-06-07/09:13:05 calclet code/correlation_functions 2013-06-07/09:19:48 calclet code/diffusion_tensor 2013-06-07/10:02:29 calclet code/identify_trajectories 2013-06-12/08:03:48 calclet code/plots 2013-06-04/15:42:02 module code/python-packages/fitting 2013-05-02/15:11:53 module code/python-packages/molecular_structure 2013-06-14/15:46:18 reference code/python-packages/mosaic 2013-05-23/11:42:31 module code/python-packages/quaternion 2013-05-27/04:13:09 module code/python-packages/time_series 2013-05-02/15:12:07 module code/python-packages/units sowie viele weitere Zeilen dieser Art.
Die erste Spalte zeigt Datum und Uhrzeit der letzten Änderung jedes Datensatzes an. Die zweite Spalte gibt den Typ des Datensatzes an. Die obige Liste enthält zwei Typen für ausführbaren Code: calclet und module.
Es gibt einen dritten Typ, der in dieser Liste nicht vorkommt: importlet. Ein module entspricht genau dem, was Sie als Python-Programmierer erwarten würden: eine Python-Quelldatei, die von anderem Python-Code importiert wird. Calclets und Importlets sind die beiden von ActivePapers bereitgestellten Skriptvarianten. Der häufigste Typ ist das Calclet – ein Python-Skript mit eingeschränkten Rechten: Es kann keine Ein-/Ausgabeoperationen außerhalb der ActivePaper-Datei durchführen, in der es enthalten ist.
Verwandte: — Projektbasierte Data-Science-Pfade mit geführtem Terminal und realen Datensätzen.
Das bedeutet, es hat weder Zugriff auf Dateien noch auf Netzwerkressourcen. Diese Einschränkungen gewährleisten Reproduzierbarkeit (alle Eingabedaten befinden sich garantiert innerhalb des ActivePapers) und schützen den Nutzer vor Fehlern sowie bösartigem Code.
Gleichzeitig bedeuten sie jedoch, dass Calclets nicht zum Importieren von Daten in ein ActivePaper verwendet werden können. Hier kommen Importlets ins Spiel: Sie dürfen sämtliche Python-Funktionen nutzen und auf beliebige Ressourcen zugreifen. Das heißt aber auch, dass Sie Importlets anderer Personen niemals ohne vorherige Prüfung ausführen sollten. Die Seite [[Calclets]] erläutert, wie Sie Calclets und Importlets schreiben.
In der obigen Liste findet sich noch ein weiterer Datensatztyp: die reference (Referenz). Sie dient dazu, auf Datensätze in anderen ActivePaper-Dateien zu verweisen. Eine Referenz besteht aus zwei Teilen: einem Verweis auf die Datei und dem Namen des Datensatzes innerhalb dieser Datei.
Einen Blick wert: — Ein Abonnement für von der Universität unterstützte Python- und Data-Science-Zertifikate.
Der Dateiverweis kann ein DOI für eine veröffentlichte Datei oder ein lokaler Dateiname sein. Lokale Dateinamen machen natürlich auf keinem anderen Computer Sinn; lokale Referenzen ähneln daher Importlets: Sie dokumentieren, woher Daten stammen, stellen sie aber nicht tatsächlich bereit. Werfen wir einen Blick auf die Referenzen in unserem ActivePaper: aptool refs Wir finden ein DOI und zehn lokale Referenzen: doi:10.6084/m9.figshare.705829 local:lysozyme_spce_rbt_1 local:lysozyme_spce_rbt_10 local:lysozyme_spce_rbt_2 local:lysozyme_spce_rbt_3 local:lysozyme_spce_rbt_4 local:lysozyme_spce_rbt_5 local:lysozyme_spce_rbt_6 local:lysozyme_spce_rbt_7 local:lysozyme_spce_rbt_8 local:lysozyme_spce_rbt_9 Das DOI verweist auf die pyMosaic-Bibliothek, Version 0.1.1, wie sie auf Figshare hinterlegt wurde.
Die lokalen Dateien sind die Simulationstrajektorien, die im ActivePaper analysiert werden. Holen wir uns weitere Informationen über diese Referenzen: aptool refs -v doi:10.6084/m9.figshare.705829 links: code/python-packages/mosaic local:lysozyme_spce_rbt_1 copies: data/center_of_mass data/orientation data/reference_structure data/time und so weiter für die neun anderen Eingabedateien.
Dies zeigt, dass das DOI in einer Verknüpfung zum Datensatz code/python-packages/mosaic der Zieldatei verwendet wird, während die lokalen Dateien als Quelle für Daten dienten, die in das ActivePaper selbst kopiert wurden. Eine Kopier-Referenz dient also lediglich der Dokumentation; es ist nicht erforderlich, eine Kopie der referenzierten Datei vorzuhalten. Zurück zu den Datensatztypen. Es gibt noch einige weitere, die in den ersten Zeilen von aptool ls -l nicht erschienen sind.
Betrachten wir daher einige der verbleibenden Zeilen: 2013-07-03/12:24:26 text documentation/README 2013-06-14/15:55:08 file documentation/c_rr_diagonals.pdf 2013-06-14/15:55:00 data data/correlation_function_integration_limit 2013-06-14/15:46:47 dummy data/coordinate_trajectories/rotation_laboratory_frame_1 Sie können vermutlich bereits erraten, was text bedeutet. Und file ist genau das, was eine Datei in der Unix-Welt ist: eine Sequenz von Bytes ohne spezifische Interpretation.
Später werden Sie sehen, wie eine solche Datei extrahiert werden kann. Die Bedeutung von data ist vielleicht weniger offensichtlich, insbesondere der Unterschied zu einer Datei. Die Antwort lautet: data ist ein beliebiger HDF5-Datensatz, charakterisiert durch einen Datenraum und einen Datentyp. Stellen Sie es sich im Zweifel als Array vor – tatsächlich kommt es dem sehr nahe.
Bleibt noch dummy: ein nicht existenter Datensatz. Genauer gesagt: ein Datensatz, der nicht mehr existiert. Es handelt sich um einen Datensatz, der ursprünglich von einem Calclet erzeugt und anschließend explizit entfernt wurde (mittels aptool dummy ...), um die Dateigröße zu reduzieren.
Wenn Sie ihn inspizieren oder eines der Calclets ausführen möchten, die ihn lesen, müssen Sie ihn zunächst durch erneutes Ausführen des entsprechenden Calclets regenerieren. Führen wir dies also durch: aptool update -v Dieser Befehl aktualisiert alles im ActivePaper, was aktualisiert werden muss: Dummy-Datensätze, aber auch veraltete Datensätze, also solche, die älter sind als die aktuelle Version des Calclets, das sie erzeugt hat. Die Option -v macht die Ausgabe ausführlich; sie teilt Ihnen mit, welche Calclets ausgeführt werden und warum.
Seien Sie auf eine gewisse Wartezeit gefasst; auf meinem Rechner dauert dieser Vorgang etwa acht Minuten. Wir können feststellen, dass die Dateigröße erheblich zugenommen hat: ls -l -rw-r—r— 1 hinsen staff 540352636 Oct 23 14:54 lysozyme_diffusion.ap Außerdem sind die ehemals als dummy markierten Datensätze nun echte Datensätze: aptool ls -l data/coordinate_trajectories/rotation_laboratory_frame_1 2013-10-23/14:45:29 data data/coordinate_trajectories/rotation_laboratory_frame_1 Extrahieren der Diagramme Wenn Sie sich die vollständige Ausgabe von aptool ls -l ansehen, werden Sie mehrere PDF-Dateien unter documentation bemerken.
Um sie anzusehen, extrahieren Sie sie als echte Dateien: aptool checkout documentation Dadurch erhalten Sie auch die README-Datei, da dieser Befehl alles in der HDF5-Gruppe documentation in ein lokales Verzeichnis namens – Sie haben es erraten – documentation extrahiert. Die Gruppe documentation in einem ActivePaper ist für menschenlesbare Daten vorgesehen und wird in der Regel nicht als Eingabe für Berechnungen verwendet. Beachten Sie, dass Sie natürlich auch einzelne Dateien auschecken können, z.
B.: aptool checkout documentation/README.txt Der Befehl checkout extrahiert nur jene Datensätze, die neuer sind als die entsprechende Datei auf der Festplatte, sofern diese bereits existiert. Sie können somit extrahierte Dateien bearbeiten, ohne dass sie überschrieben werden.
Dies werden wir sofort bei der Arbeit mit dem Code praktisch erleben. Extrahieren und Anpassen des Codes Als Nächstes werfen wir einen Blick auf den gesamten Code
Lernen Sie Python, indem Sie in Ihrem Browser programmieren
Interaktive Python- und Data-Science-Kurse, bei denen Sie direkt im Browser programmieren