Pulverdiffraktogramme mit Python plotten

Du bist hier:

Wie man ein Pulverdiffraktogramm in Origin 2019 plottet, haben wir bereits beschrieben, manchmal hat man aber keinen Zugriff auf diese (kostenpflichtige) Software. Wenn man Python beherrscht oder es lernen möchte, bietet es sich an Python zu benutzen, um Pulverdiffraktogramme zu plotten – vor allem beim Plotten vieler Daten und wenn man eigentlich nur schnell einen Plot erstellen will, um diesen ins Laborjournal zu übertragen.

In diesem Artikel haben wir für Dich einige wichtige und nützliche Links für den Einstieg in Python, dem Erstellen von Diagrammen und auch zur Verarbeitung spezieller Daten (.raw-Dateien, .cif-Dateien, Beamline-Daten, …) gesammelt.

Zur Einführung in Python möchten wir an dieser Stelle einmal auf die deutschsprachigen Tutorials verweisen (dieses hier ist auch sehr gut) oder um einen Überblick zu bekommen: Die Python-Einführung der Universität Hannover.

Für die Datenauswertung können wir das „Python Data Analytics„-Tutorial empfehlen.

Diagramme in Python erstellen

Es gibt unzählige Möglichkeiten, Diagramme in Python zu erstellen:

 "Shared Axis Demo" - Ein Plot mit der Matplotlib.
Shared Axis Demo“ – Ein Plot mit der Matplotlib.

Eine allgemein gehaltene Einführung in alle oben genannten Bibliotheken gibt es auch.

Pulverdaten konvertieren

Pulverdiffraktometer verwenden häufig eigene Datenformate, die nicht unbedingt besonders umgänglich sind.

PowDLL ist eine .NET Dynamic Link Library, die für die Konvertierung zwischen verschiedenen Formaten von XRD-Dateien verwendet wird. PowDLL kann die gängigsten Dateiformate verarbeiten und kann in einer .NET-Umgebung oder als Standalone-Software verwendet werden.

../../_images/sphx_glr_subplot_001.png
“ Multiple subplots Demo“ – Ein Plot mit der Matplotlib.

xylib kann als mittels pip als Bibliothek in Python eingebunden werden und konvertiert ebenfalls die gängigsten Datenformate. Eine GUI (Grafische Benutzeroberfläche) zur schnellen Massenverarbeitung gibt es auch. xylib wird zum Beispiel in der Fitting-Anwendung Fityk benutzt. „Fityk [fi:tik] is a program for data processing and nonlinear curve fitting.“

Für spezielle Datenformate bzw. Anwendungen haben wir in den folgenden Abschnitten ein paar Programme gesammelt.

.cif-Daten – Theoretische Pulverdiffraktogramme plotten

Dans-Diffraction reads crystallographic cif files and simulates diffraction„, wurde von Dan Porter (Beamline Scientist am Diamond) für Python 2.7 / 3.7 geschrieben und steht unter GPLv3-Lizenz zur Verfügung.

Crystals is a library of data structure and algorithms to manipulate abstract crystals in a Pythonic way. crystals helps with reading crystallographic files (like .cif and .pdb), provides access to atomic positions, scattering utilities, and allows for symmetry determination. Although crystals can be used on its own, it was made to be integrated into larger projects (like scikit-ued).“ Das Program wurde von Laurent P. René de Cotret für Python 3.6 / 3.7 geschrieben und steht unter einer BSD Lizenz zur Verfügung.

Beamline-Daten plotten

GUI frontend von Iris | Beamline-Daten plotten - Pulverdiffraktogramme - Kristalle
GUI frontend von Iris. Abbildung von Laurent P. René de Cotret.

DAWN ist ein Softwarepaket zur Kalibrierung und Verarbeitung von Röntgenpulverbeugungs- und Kleinwinkel-Daten. Es bietet eine Vielzahl von Datenverarbeitungs- und Visualisierungstools sowie eine Skriptschnittstelle für die direkte Verarbeitung und die Integration komplexer Datenverarbeitungsaufgaben – so kann es auch in Python eingebunden werden.

Cheetah ist ein Programmpaket zur Verarbeitung serieller Beugungsdaten (engl. serial diffraction data) von Elektronenlasern (engl. free electron laser sources). Speziell für DESY-Experimente entwickelt.

Iris is both a library for interacting with ultrafast electron diffraction data, as well as a GUI frontend to interactively explore this data„. Das Programm wurde von Laurent P. René de Cotret für Python >= 3.6 geschrieben und steht unter einer MIT Lizenz zur Verfügung.


Dir hat der Artikel gefallen? Dann gib uns doch einen Kaffee aus:

Buy me a coffeeBuy me a coffee