Beim Erstellen eines neuen MDSplus-Baums ist es möglich (oder sogar erforderlich), die kleinste Schussnummer anzugeben, für die Daten im Baum gespeichert werden können. Schussnummern sind lediglich Indexwerte, die Experimente identifizieren, die zu speichernde Daten erzeugen. Ich arbeite jetzt mit einem MDSplus-Baum und habe festgestellt, dass Daten für frühere Schussnummern verfügbar sind, und möchte das konfigurierte Limit für meinen Baum senken, damit ich diese früheren Datensätze speichern kann. Ich habe den Baum jedoch ursprünglich nicht eingerichtet und konnte online keine Hilfe dazu finden. Sofern ich nicht einfach noch nicht das richtige Dokument gefunden habe, ist die Online-Dokumentation von MDSplus meines Wissens und meiner Erfahrung nach notorisch unvollständig und/oder veraltet.
Antwort1
Entschuldigung, ich habe herausgefunden, dass es in einem MDSplus-Baum keine Untergrenze für die Schusszahl außer 0 gibt. Die Verwendung von -1 als Schusszahl ist eine Möglichkeit, sich auf den Modellbaum selbst zu beziehen, und ich glaube nicht, dass negative Schusszahlen irgendeine Bedeutung haben.
Was den Anschein einer solchen Situation erweckte, war Folgendes:
- Sie müssen createPulse() in Python aufrufen, bevor Sie neue Schussdaten speichern;
- Unser MDSplus-Server wurde so konfiguriert, dass dies künftig für jede inkrementelle Schussnummer automatisch erfolgt.
- Unser MDSplus-Server war NICHT so konfiguriert, dass beim Versuch, historische Schussdaten zu archivieren, automatisch Impulse erstellt wurden.
Daher wurden bereits ab einer bestimmten Schusszahl, die durch mein Nutzungsverhalten ermittelt wurde, Impulse erzeugt.
Falls Sie selbst auf dieses Problem stoßen, können Sie eine Methode node_exists(name, shot) schreiben, um herauszufinden, ob für einen bestimmten Datenpunkt und eine bestimmte Shot-Nummer bereits ein Knoten erstellt wurde. Rufen Sie dann createPulse() nur auf, wenn node_exists() „false“ zurückgibt, z. B.:
import MDSplus as mds
if not node_exists(data_name, shot_num):
tree = mds.Tree(tree_name, shot_num, tree_mode)
tree.getNode(data_name).include_in_pulse=True
tree.createPulse(shot_num)
Anschließend können Sie Ihre Schussdaten speichern.
Entschuldigen Sie die Verwirrung …