Seltsamer Fehler beim Ausführen von JSL als Add-In vs. Skript.Hallo zusammen,
Ich habe ein Skript geschrieben, das ich in ein Add-In umgewandelt habe. Als ich es das letzte Mal verwendet habe, etwa im November 2023, hat alles hervorragend funktioniert. Ich führe es erneut aus und erhalte einen sehr seltsamen Fehler, der auftritt, wenn ich es als Add-In ausführe, aber das passiert nicht. Das passiert nicht, wenn ich die JSL-Datei einfach alleine ausführe.
Das Skript führt also eine Modellierung durch und generiert ein Ausgabefenster, das die Ergebnisse jedes Tuning-Laufs grafisch und tabellarisch darstellen soll. Die Ausgabe sollte so aussehen (dies wurde über das Skript selbst ausgeführt):

Das Ausgabefenster wird aus einer Datentabelle generiert, die alle Anpassungsstatistiken der Modellierungsplattform sammelt.

Auch hier funktioniert das Skript großartig und macht alles, was es soll. Wenn ich es dann als jmpaddin-Datei erstelle und in JMP installiere, passiert etwas und der Code wird verwirrt, und anstatt auf die Ausgabetabelle zu verweisen, kehrt er zur ursprünglichen Datentabelle zurück, die meine Y- und X-Werte enthält, die ich verwende zum Modellieren. Infolgedessen ist der Graph Builder-Teil des Ausgabefensters leer und ich erhalte eine Fehlermeldung von JMP, dass die Spalte „:Tune Run“ nicht vorhanden ist (in der Originaldatentabelle nicht, aber in der Ausgabedatentabelle). ).
Dies ist die Ausgabe für die gleiche Art der Modellierung, aber als Add-In statt als JSL ausgeführt – kein Graph Builder:

Und wenn Sie zur Fensterliste im JMP-Startfenster gehen, können Sie sehen, dass für die Instanz, in der ich es als Add-In ausgeführt habe, das Bootstrap-Forest-Ergebnisfenster aus der ursprünglichen Datentabelle T20-XL generiert wurde. Daher gibt es in dieser Datentabelle natürlich keine Spalte :Tune Run. Wenn ich es jedoch als reines JSL ausführe, generiert es das Ausgabefenster (Bootstrap Forest Results 2) wie vorgesehen korrekt aus der Datentabelle „Summary Output“.

Dies ist der Fehler, den ich erhalte:

Und der Protokollbericht zeigt Folgendes:


Ich kann nicht herausfinden, was falsch läuft und warum die Add-In-Version versucht, mit der Originaldatentabelle zu arbeiten, statt mit der Zusammenfassungsausgabe-Datentabelle, die sie eigentlich verwenden soll. Ich verstehe auch nicht, warum es funktionieren sollte, es direkt aus der JSL-Datei auszuführen, aber als Add-In funktioniert es überhaupt nicht richtig.
Ist noch jemand auf dieses Problem gestoßen? Wenn ja, wie haben Sie es korrigiert und konnten Sie herausfinden, wie es überhaupt passiert ist?
Danke!,
DS
Automatisierung und SkripterstellungDatenexploration und -visualisierungPrädiktive Modellierung und maschinelles LernenWindowsBetreff: Seltsamer Fehler beim Ausführen von JSL als Add-In vs. Skript.Können Sie die Graph Builder-Nachricht an eine bestimmte Datentabelle senden?
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11)))
);
dt << Graph Builder(...
Betreff: Seltsamer Fehler beim Ausführen von JSL als Add-In vs. Skript.Hallo @jthi ,
Ja, das kann ich, aber ich glaube, das Problem liegt woanders, nämlich an der Speicherzuweisung und -zuordnung.
Der Grund, warum ich das glaube, ist, dass ich zwei Instanzen von JMP Pro auf meinem Rechner laufen lasse. Ich habe also zwei JMP-Startfenster – das Original und dann noch ein weiteres mit [2] als Zusatz zum Startfensternamen. Wenn ich versuche, das Add-In in der zweiten Instanz von JMP auszuführen, erhalte ich den Fehler, aber nicht, wenn ich es in der ersten Instanz von JMP ausführe. Ich glaube, es gibt einen Fehler, der die Dinge beim Ausführen einer zweiten Instanz von JMP nicht richtig handhabt.
Früher war das nicht der Fall. Ich führe oft zwei Instanzen von JMP aus, eine, um im Hintergrund an Daten zu arbeiten, und die andere, um an neuen Daten arbeiten zu können, die mir Leute geben. Ich versuche, die Modellierung in der zweiten Instanz auszuführen, sodass, wenn ich auf eine JMP-Datei doppelklicke, diese in der ersten Instanz von JMP geöffnet wird und ich daran arbeiten kann, während die Modellierung im Hintergrund der anderen Instanz ausgeführt wird. Ich denke, beim letzten Update von JMP könnte etwas passiert sein, da dieses Problem vorher nie auftrat.
Danke!,
DS
Betreff: Seltsamer Fehler beim Ausführen von JSL als Add-In vs. Skript.Wie erstellen Sie Ihr Add-In? Vielleicht führt das Erzwingen des Namespace hier dazu, dass es als Add-In fehlschlägt (ich bin mir allerdings nicht sicher, warum das nicht schon früher passiert ist)?

Betreff: Seltsamer Fehler beim Ausführen von JSL als Add-In vs. Skript.Hallo @jthi ,
Ich erstelle mein Add-In wie gewohnt: Ich erstelle eine .def-Datei, installiere diese und passe dann die Symbolleiste entsprechend den Anforderungen des Add-Ins an. Ich führe meine Add-Ins wie gewohnt aus. Ich habe versucht, den Namespace „Here“ durch Deaktivieren bzw. Aktivieren des Kontrollkästchens zu ändern, aber das scheint das Problem nicht zu beheben.
Nach erneuter Überprüfung kann ich das Add-In nun nicht mehr während einer einzelnen JMP-Instanz ausführen. Ich erhalte immer wieder die gleichen Fehler. Vielleicht liegt es an dem Kommentar von @Craige_Hales , aber falls ja, weiß ich nicht, wie ich das Problem beheben kann oder warum sich plötzlich etwas geändert hat, sodass das Add-In nicht mehr funktioniert. Wie bereits erwähnt, funktioniert JSL einwandfrei.
Danke!,
DS
Betreff: Seltsamer Fehler beim Ausführen von JSL als Add-In vs. Skript.Siehe auch „Bug oder Feature??“ ; es klingt, als ob Sie auf den Auswertungskontext des Add-Ins stoßen, der möglicherweise nicht derselbe ist, der später verwendet wird … obwohl ich mir Ihrer Beschreibung nicht sicher bin. Die aktuelle Datentabelle von JMP ist innerhalb eines Auswertungskontexts bekannt. Normalerweise verwendet ein Skript einen Auswertungskontext, der entweder zum JSL-Fenster oder zu einem Plattformfenster gehört. Ein Add-In-Skript läuft ohne beides und stellt daher einen temporären Auswertungskontext bereit. Wenn das Add-In-Skript endet (höchstwahrscheinlich über das Ende hinaus), verschwindet der temporäre Auswertungskontext. Wenn ein Fenster geöffnet bleibt und Schaltflächen in diesem Fenster weitere Skripte ausführen, verwenden diese den Auswertungskontext des Fensters, der den vorherigen nicht kennt.
Betreff: Seltsamer Fehler beim Ausführen von JSL als Add-In anstatt als Skript.Hallo @Craige_Hales ,
Ich vermute, das Problem liegt in dem, was Sie beschrieben haben. Das Ergebnisfenster, das mein Code generiert, enthält Schaltflächen, die Aktionen ausführen, wie z. B. das erneute Anpassen eines Modells oder das Neustarten des Codes. Da die JSL-Datei problemlos läuft, das Add-in aber nicht, muss es mit dem von Ihnen erwähnten Evaluierungsprozess zusammenhängen.
Ich verstehe nicht, warum es jetzt Probleme macht, wo es vorher einwandfrei funktionierte. Außerdem weiß ich nicht, wie ich das Problem beheben kann, da ich die Ursache nicht kenne. Wie bereits erwähnt, funktionierte es etwa im Oktober 2023 noch problemlos.
Mein gesamter Code besteht im Grunde nur aus einer Reihe von Expr()-Funktionen, die je nach Benutzerinteraktion aufgerufen und ausgeführt werden. Ich kann ihn Ihnen gerne zur Verfügung stellen, falls Sie versuchen möchten, den Fehler zu reproduzieren.
Könnte es sein, dass sich eine JMP-Einstellung geändert hat und dieses Problem verursacht? Es wäre schön, eine Lösung dafür zu finden, da ich es lieber als Add-in anstatt als JSL ausführen möchte.
Danke!,
DS